summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2013-02-01 01:10:59 -0500
committerRich Felker <dalias@aerifal.cx>2013-02-01 01:10:59 -0500
commitae4b0b96d63fe3cbd70008350f998570c9e91f7f (patch)
treef4432dd5c32c3eba67723f6c5a27a8564b05f3cc
parent725c55528dff9eefbc88a943749f3bc89bcb433f (diff)
downloadmusl-ae4b0b96d63fe3cbd70008350f998570c9e91f7f.tar.gz
revert regex "cleanup" that seems unjustified and may break backtracking
it's not clear to me at the moment whether the code that was removed (and which is now being re-added) is needed, but it's far from being a no-op, and i don't want to risk breaking regex in this release.
-rw-r--r--src/regex/regexec.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/regex/regexec.c b/src/regex/regexec.c
index 674c5907..855cef57 100644
--- a/src/regex/regexec.c
+++ b/src/regex/regexec.c
@@ -596,6 +596,7 @@ tre_tnfa_run_backtrack(const tre_tnfa_t *tnfa, const void *string,
started from. */
int next_c_start;
const char *str_byte_start;
+ int pos_start = -1;
#ifdef TRE_MBSTATE
mbstate_t mbstate_start;
#endif /* TRE_MBSTATE */
@@ -675,7 +676,9 @@ tre_tnfa_run_backtrack(const tre_tnfa_t *tnfa, const void *string,
}
state = NULL;
+ pos = pos_start;
GET_NEXT_WCHAR();
+ pos_start = pos;
next_c_start = next_c;
str_byte_start = str_byte;
#ifdef TRE_MBSTATE