dd: Always move excess to beginning of buffer after read/write loops

Otherwise, while we may have enough room for at least one input
block, we may not have enough room for an output block.
master
Michael Forney 2 years ago
parent 7ef4038fb5
commit 4b76652eff

@ -222,11 +222,10 @@ main(int argc, char *argv[])
ofull++;
opos += ret;
} while ((eof && ipos < opos) || (!eof && ipos - opos >= obs));
if (len - ipos < ibs) {
if (opos < ipos)
memmove(buf, buf + opos, ipos - opos);
ipos -= opos;
opos = 0;
}
ipos -= opos;
opos = 0;
}
summary();

Loading…
Cancel
Save