From 7ec44a7b6adbc0221150969fc61134322fd5ed85 Mon Sep 17 00:00:00 2001 From: Hugo van der Sanden Date: Mon, 12 Dec 2016 15:15:06 +0000 Subject: [PATCH] Correctly unwind on cache hit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Petr Pisar: Ported to 5.24.4: commit d3c48e81594c1d64ba9833495e45d8951b42027c Author: Hugo van der Sanden Date: Mon Dec 12 15:15:06 2016 +0000 [perl #130307] Correctly unwind on cache hit We've already incremented curlyx.count in the WHILEM branch before we check for a hit in the super-linear cache, so must reverse that on the sayNO. Signed-off-by: Petr Písař --- regexec.c | 1 + t/re/re_tests | 1 + 2 files changed, 2 insertions(+) diff --git a/regexec.c b/regexec.c index 6904546..25ea3a3 100644 --- a/regexec.c +++ b/regexec.c @@ -7334,6 +7334,7 @@ NULL DEBUG_EXECUTE_r( Perl_re_exec_indentf( aTHX_ "whilem: (cache) already tried at this position...\n", depth) ); + cur_curlyx->u.curlyx.count--; sayNO; /* cache records failure */ } ST.cache_offset = offset; diff --git a/t/re/re_tests b/t/re/re_tests index 8b0feaa..6717b85 100644 --- a/t/re/re_tests +++ b/t/re/re_tests @@ -1970,6 +1970,7 @@ aa$|a(?R)a|a aaa y $& aaa # [perl 128420] recursive matches (?:\1|a)([bcd])\1(?:(?R)|e)\1 abbaccaddedcb y $& abbaccaddedcb # [perl 128420] recursive match with backreferences (?il)\x{100}|\x{100}|\x{FF} \xFF y $& \xFF \b\z0*\x{100} .\x{100} n - - # [perl #129350] crashed in intuit_start +(X{2,}[-X]{1,4}){3,}X{2,} XXX-XXX-XXX-- n - - # [perl #130307] # Keep these lines at the end of the file # vim: softtabstop=0 noexpandtab -- 2.14.3