Junio C Hamano schrieb: > René Scharfe <rene.scharfe@xxxxxxxxxxxxxx> writes: > >> The first hunk fixes match colouring if the patterns is the empty string. >> Such a pattern matches the whole line,... > > Hmmm... > > An empty pattern may have to produce a match with any line, but I do not > think it should match the whole line. GNU seems to agree with me. > > echo foo | grep --color -e '' > echo foo | grep --color -F -e '' > echo foo | grep --color -e '.*' > echo foo | grep --color -F -e 'foo' > > The first two are uncoloured (but still show matches). You're right, and matching the zero-length string at the beginning of the line actually makes sense. Corrected patch below. 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@xxxxxxxxxxxxxx> --- grep.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/grep.c b/grep.c index cc6d5b0..7bf4a60 100644 --- 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, -- 1.6.3.1 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html