diff options
author | Jeff King <peff@peff.net> | 2021-09-20 23:48:44 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-09-22 11:59:50 -0700 |
commit | f84e79ff4bffbcd9de85adc270f5164a6b024d34 (patch) | |
tree | e397f31ee0e963c6d653af58689664de99ff1abc | |
parent | grep: stop modifying buffer in show_line() (diff) | |
download | tgif-f84e79ff4bffbcd9de85adc270f5164a6b024d34.tar.xz |
grep: stop modifying buffer in grep_source_1()
We find the end of each matching line of a buffer, and then temporarily
write a NUL to turn it into a regular C string. But we don't need to do
so, because the only thing we do in the interim is pass the line and its
length (via an "eol" pointer) to match_line(). And that function should
only look at the bytes we passed it, whether it has a terminating NUL or
not.
We can drop this temporary write in order to simplify the code and make
it easier to use const buffers in more of grep.c.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | grep.c | 5 |
1 files changed, 1 insertions, 4 deletions
@@ -1616,7 +1616,7 @@ static int grep_source_1(struct grep_opt *opt, struct grep_source *gs, int colle bol = gs->buf; left = gs->size; while (left) { - char *eol, ch; + char *eol; int hit; ssize_t cno; ssize_t col = -1, icol = -1; @@ -1637,14 +1637,11 @@ static int grep_source_1(struct grep_opt *opt, struct grep_source *gs, int colle && look_ahead(opt, &left, &lno, &bol)) break; eol = end_of_line(bol, &left); - ch = *eol; - *eol = 0; if ((ctx == GREP_CONTEXT_HEAD) && (eol == bol)) ctx = GREP_CONTEXT_BODY; hit = match_line(opt, bol, eol, &col, &icol, ctx, collect_hits); - *eol = ch; if (collect_hits) goto next_line; |