summaryrefslogtreecommitdiff
path: root/regexec.c
diff options
context:
space:
mode:
Diffstat (limited to 'regexec.c')
-rw-r--r--regexec.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/regexec.c b/regexec.c
index 5d70686592..73bd53232d 100644
--- a/regexec.c
+++ b/regexec.c
@@ -1296,8 +1296,10 @@ Perl_re_intuit_start(pTHX_
goto restart;
}
/* Have both, check_string is floating */
- if (rx_origin + start_shift >= check_at) /* Contradicts floating=check */
- goto retry_floating_check;
+ assert(rx_origin + start_shift <= check_at);
+ if (rx_origin + start_shift == check_at)
+ /* already at latest position float substr could match */
+ goto hop_and_restart;
/* Recheck anchored substring, but not floating... */
if (!check) {
rx_origin = NULL;
@@ -1327,7 +1329,6 @@ Perl_re_intuit_start(pTHX_
if (!(utf8_target ? prog->float_utf8 : prog->float_substr)) /* Could have been deleted */
goto fail;
/* Check is floating substring. */
- retry_floating_check:
rx_origin = check_at - start_shift;
goto hop_and_restart;
}