diff --git a/ChangeLog b/ChangeLog index 110453d7..21d34e5b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2014-05-18 Benno Schulenberg + * src/nano (precalc_multicolorinfo): Do not match the ^ anchor when + looking further on in a line. This prevents an end="^$" from being + sometimes mistakenly matched. Fix inspired by Savannah bug #27708. + 2014-05-17 Benno Schulenberg * doc/syntax/json.nanorc: New file, originally from Aapo Rantalainen, but edited, extended, and improved. See Savannah patch #7410. diff --git a/src/nano.c b/src/nano.c index bf2d17bf..b9fa53ef 100644 --- a/src/nano.c +++ b/src/nano.c @@ -1884,7 +1884,8 @@ void precalc_multicolorinfo(void) goto precalc_cleanup; } - while ((nostart = regexec(tmpcolor->start, &fileptr->data[startx], 1, &startmatch, 0)) == 0) { + while ((nostart = regexec(tmpcolor->start, &fileptr->data[startx], 1, &startmatch, + (startx == 0) ? 0 : REG_NOTBOL)) == 0) { /* Look for an end, and start marking how many lines are * encompassed, which should speed up rendering later. */ startx += startmatch.rm_eo; @@ -1893,7 +1894,8 @@ void precalc_multicolorinfo(void) #endif /* Look first on this line for an end. */ - if (regexec(tmpcolor->end, &fileptr->data[startx], 1, &endmatch, 0) == 0) { + if (regexec(tmpcolor->end, &fileptr->data[startx], 1, &endmatch, + (startx == 0) ? 0 : REG_NOTBOL) == 0) { startx += endmatch.rm_eo; fileptr->multidata[tmpcolor->id] |= CSTARTENDHERE; #ifdef DEBUG