diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2021-07-05 14:09:45 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2021-08-09 02:30:13 -0700 |
commit | 84a183ef2eadf48735a9319773b990f30e2fd575 (patch) | |
tree | 516e5abf6782f70853828762207be6e2f4310de6 /src/grep.c | |
parent | dadc9f49c08c98910ccd208e6fea573304aa8ca2 (diff) | |
download | grep-84a183ef2eadf48735a9319773b990f30e2fd575.tar.gz |
grep: simplify data movement slightly
* src/grep.c (fillbuf): Simplify movement of saved data.
Diffstat (limited to 'src/grep.c')
-rw-r--r-- | src/grep.c | 16 |
1 files changed, 5 insertions, 11 deletions
@@ -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; |