From 95ec90ac7c7c5fb158401eb65721bbeaae1949ab 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.0: 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 38ff44a..a5d5db4 100644 --- a/regexec.c +++ b/regexec.c @@ -7322,6 +7322,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 2f4d00c..c81f67f 100644 --- a/t/re/re_tests +++ b/t/re/re_tests @@ -1969,6 +1969,7 @@ ab(?#Comment){2}c abbc y $& abbc 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 \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.7.4