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
}