From 84a183ef2eadf48735a9319773b990f30e2fd575 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 5 Jul 2021 14:09:45 -0700 Subject: [PATCH 2/3] grep: simplify data movement slightly * src/grep.c (fillbuf): Simplify movement of saved data. --- src/grep.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/grep.c b/src/grep.c index f86bce5..271b6b9 100644 --- a/src/grep.c +++ b/src/grep.c @@ -943,15 +943,8 @@ fillbuf (size_t save, struct stat const *st) char *readbuf; size_t readsize; - /* Offset from start of buffer to start of old stuff - that we want to save. */ - size_t saved_offset = buflim - save - buffer; - if (pagesize <= buffer + bufalloc - sizeof (uword) - buflim) - { - readbuf = buflim; - bufbeg = buflim - save; - } + readbuf = buflim; else { size_t minsize = save + pagesize; @@ -989,9 +982,8 @@ fillbuf (size_t save, struct stat const *st) newbuf = bufalloc < newalloc ? xmalloc (bufalloc = newalloc) : buffer; readbuf = ALIGN_TO (newbuf + 1 + save, pagesize); - bufbeg = readbuf - save; - memmove (bufbeg, buffer + saved_offset, save); - bufbeg[-1] = eolbyte; + size_t moved = save + 1; /* Move the preceding byte sentinel too. */ + memmove (readbuf - moved, buflim - moved, moved); if (newbuf != buffer) { free (buffer); @@ -999,6 +991,8 @@ fillbuf (size_t save, struct stat const *st) } } + bufbeg = readbuf - save; + clear_asan_poison (); readsize = buffer + bufalloc - sizeof (uword) - readbuf; -- 2.30.2