From c367a856aa190e79f6acf02ba48fe224a5c8e03d Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Tue, 10 Feb 1998 16:17:02 +0000 Subject: [PATCH] Grrrr. Caught nasty bbcopy() bug causing sword.c scramble large files! --- lib/fastbuf.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/lib/fastbuf.c b/lib/fastbuf.c index e5f1a873..d2e6255e 100644 --- a/lib/fastbuf.c +++ b/lib/fastbuf.c @@ -276,19 +276,13 @@ bgets(struct fastbuf *f, byte *b, uns l) void bbcopy(struct fastbuf *f, struct fastbuf *t, uns l) { uns rf = f->bstop - f->bptr; - uns rt = t->bufend - t->bptr; if (!l) return; - if (rf && rt) + if (rf) { - uns k = l; - if (k > rf) - k = rf; - if (k > rt) - k = rt; - memcpy(t->bptr, f->bptr, k); - t->bptr += k; + uns k = (rf <= l) ? rf : l; + bwrite(t, f->bptr, k); f->bptr += k; l -= k; } @@ -298,6 +292,7 @@ void bbcopy(struct fastbuf *f, struct fastbuf *t, uns l) if ((uns) read(f->fd, t->buffer, t->buflen) != t->buflen) die("bbcopy: %s exhausted", f->name); f->fdpos += t->buflen; + f->bstop = f->bptr = f->buffer; t->bptr = t->bufend; l -= t->buflen; } -- 2.39.2