Making sure to keep advancing also when regex matches are zero-length.
This fixes Savannah bug #26977 -- a hang on start="^" end="$". git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5538 35c25a1d-7b9e-4130-9fde-d3aeb78583b8master
parent
1ac2c4cd4f
commit
ebbb5b5d1e
|
@ -1,3 +1,8 @@
|
|||
2016-01-09 Benno Schulenberg <bensberg@justemail.net>
|
||||
* src/color.c (precalc_multicolorinfo), src/winio.c (edit_draw):
|
||||
Make sure to keep advancing also when matches are zero-length.
|
||||
This fixes Savannah bug #26977 reported by Tigrmesh.
|
||||
|
||||
2016-01-07 Benno Schulenberg <bensberg@justemail.net>
|
||||
* src/global.c (assign_keyinfo): Delete two unneeded #ifdefs: if
|
||||
they /could/ be false, the H and E keys would stop working.
|
||||
|
|
|
@ -527,6 +527,10 @@ void precalc_multicolorinfo(void)
|
|||
if (regexec(tmpcolor->end, &fileptr->data[startx], 1,
|
||||
&endmatch, (startx == 0) ? 0 : REG_NOTBOL) == 0) {
|
||||
startx += endmatch.rm_eo;
|
||||
/* Step ahead when both start and end are mere anchors. */
|
||||
if (startmatch.rm_so == startmatch.rm_eo &&
|
||||
endmatch.rm_so == endmatch.rm_eo)
|
||||
startx += 1;
|
||||
fileptr->multidata[tmpcolor->id] = CSTARTENDHERE;
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, "end found on this line\n");
|
||||
|
|
|
@ -2611,6 +2611,9 @@ void edit_draw(filestruct *fileptr, const char *converted, int
|
|||
}
|
||||
}
|
||||
start_col = endmatch.rm_eo;
|
||||
/* Skip over a zero-length match. */
|
||||
if (endmatch.rm_so == endmatch.rm_eo)
|
||||
start_col += 1;
|
||||
} else {
|
||||
/* There is no end on this line. But we haven't yet
|
||||
* looked for one on later lines. */
|
||||
|
|
Loading…
Reference in New Issue