sbase

suckless unix tools
git clone git://git.suckless.org/sbase
Log | Files | Refs | README | LICENSE

commit 4b76652eff2b6f7d23c800dbc48c509792c726b3
parent 7ef4038fb5b93e63f4223ab9f222526130a1e14f
Author: Michael Forney <mforney@mforney.org>
Date:   Wed, 28 Apr 2021 01:41:26 -0700

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.

Diffstat:
Mdd.c | 7+++----
1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/dd.c b/dd.c @@ -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();