summaryrefslogtreecommitdiff
path: root/src/grep.c
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2021-07-05 14:09:45 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2021-08-09 02:30:13 -0700
commit84a183ef2eadf48735a9319773b990f30e2fd575 (patch)
tree516e5abf6782f70853828762207be6e2f4310de6 /src/grep.c
parentdadc9f49c08c98910ccd208e6fea573304aa8ca2 (diff)
downloadgrep-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.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/src/grep.c b/src/grep.c
index f86bce55..271b6b98 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;