--- multiplexer/en300468ts.c 2010/09/29 21:33:03 1.17 +++ multiplexer/en300468ts.c 2010/09/29 21:33:44 1.18 @@ -2018,15 +2018,15 @@ static void argloop(int f0) nst = -1; if (newtab != NULL) { nst = pollfd_add(tabnew.fd, POLLIN); - } else if ((r = tabline(&buf0[o0], i0))) { + } else if ((r = tabline(&buf0[o0], i0 - o0))) { o0 += r; - i0 -= r; tmo = 0; } else { - if ((i0 > 0) && (o0 > 0)) { - memmove(&buf0[0], &buf0[o0], i0); - o0 = 0; + if ((o0 > 0) && (i0 > o0)) { + memmove(&buf0[0], &buf0[o0], i0 - o0); } + i0 -= o0; + o0 = 0; if (i0 == sizeof(buf0)-1) { buf0[sizeof(buf0)-1] = '\n'; i0 += 1;