@matheusbsbs / matheus-bagliano / commits / bf82940dbf
Fork 0

color-words: enable REG_NEWLINE to help user

We silently truncate a match at the newline, which may lead to unexpected behaviour, e.g., when matching "<[^>]*>" against <foo bar> since then "<foo" becomes a word (and "bar>" doesn't!) even though the regex said only angle-bracket-delimited things can be words. To alleviate the problem slightly, use REG_NEWLINE so that negated classes can't match a newline. Of course newlines can still be matched explicitly. Signed-off-by: Thomas Rast <trast@student.ethz.ch> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Thomas Rast committed Jan 17, 2009 at 17:29 UTC bf82940dbf12f066ba42a2a03a5bb626ba22c067
1 file changed +2 -1
diff.c
+2 -1
@@ -1544,7 +1544,8 @@ static void builtin_diff(const char *name_a,
1544 ecbdata.diff_words->word_regex = (regex_t *)
1545 xmalloc(sizeof(regex_t));
1546 if (regcomp(ecbdata.diff_words->word_regex,
1547 - o->word_regex, REG_EXTENDED))
1547 + o->word_regex,
1548 + REG_EXTENDED | REG_NEWLINE))
1549 die ("Invalid regular expression: %s",
1550 o->word_regex);
1551 }