OSDN Git Service

grep: fix colouring of matches with zero length
authorRené Scharfe <rene.scharfe@lsrfire.ath.cx>
Mon, 1 Jun 2009 21:53:05 +0000 (23:53 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 2 Jun 2009 05:30:39 +0000 (22:30 -0700)
If a zero-length match is encountered, break out of loop and show the rest
of the line uncoloured.  Otherwise we'd be looping forever, trying to make
progress by advancing the pointer by zero characters.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
grep.c

diff --git a/grep.c b/grep.c
index cc6d5b0..7bf4a60 100644 (file)
--- a/grep.c
+++ b/grep.c
@@ -500,6 +500,8 @@ static void show_line(struct grep_opt *opt, char *bol, char *eol,
 
                *eol = '\0';
                while (next_match(opt, bol, eol, ctx, &match, eflags)) {
+                       if (match.rm_so == match.rm_eo)
+                               break;
                        printf("%.*s%s%.*s%s",
                               (int)match.rm_so, bol,
                               opt->color_match,