From 9393b977015bf7944cec1d71ad3972c101bdb4b8 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 7 Sep 2020 19:44:21 -0700 Subject: =?UTF-8?q?Prefer=20rawmemchr=20to=20memchr=20when=20it=E2=80=99s?= =?UTF-8?q?=20easy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * bootstrap.conf (gnulib_modules): Add rawmemchr. * src/dfasearch.c (GEAcompile, EGexecute): * src/grep.c (update_patterns, prpending, prtext): * src/kwsearch.c (Fcompile, Fexecute): * src/pcresearch.c (Pcompile, Pexecute): Simplify (and presumably speed up a little) by using rawmemchr with a sentinel, instead of using memchr. --- src/grep.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'src/grep.c') diff --git a/src/grep.c b/src/grep.c index ce2f2919..d058a76c 100644 --- a/src/grep.c +++ b/src/grep.c @@ -164,7 +164,7 @@ update_patterns (char *keys, ptrdiff_t dupfree_size, ptrdiff_t size, ptrdiff_t patsize; for (char const *src = keys + dupfree_size; src < srclim; src += patsize) { - char const *patend = memchr (src, '\n', srclim - src); + char const *patend = rawmemchr (src, '\n'); patsize = patend + 1 - src; memmove (dst, src, patsize); @@ -1104,8 +1104,7 @@ static void nlscan (char const *lim) { size_t newlines = 0; - char const *beg; - for (beg = lastnl; beg < lim; beg++) + for (char const *beg = lastnl; beg < lim; beg++) { beg = memchr (beg, eolbyte, lim - beg); if (!beg) @@ -1353,7 +1352,7 @@ prpending (char const *lim) lastout = bufbeg; for (; 0 < pending && lastout < lim; pending--) { - char *nl = memchr (lastout, eolbyte, lim - lastout); + char *nl = rawmemchr (lastout, eolbyte); prline (lastout, nl + 1, SEP_CHAR_REJECTED); } } @@ -1394,7 +1393,7 @@ prtext (char *beg, char *lim) while (p < beg) { - char *nl = memchr (p, eol, beg - p); + char *nl = rawmemchr (p, eol); nl++; prline (p, nl, SEP_CHAR_REJECTED); p = nl; @@ -1407,7 +1406,7 @@ prtext (char *beg, char *lim) /* One or more lines are output. */ for (n = 0; p < lim && n < outleft; n++) { - char *nl = memchr (p, eol, lim - p); + char *nl = rawmemchr (p, eol); nl++; if (!out_quiet) prline (p, nl, SEP_CHAR_SELECTED); -- cgit v1.2.1