summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorDavid Mitchell <davem@iabyn.com>2014-02-05 17:32:22 +0000
committerDavid Mitchell <davem@iabyn.com>2014-02-08 13:50:23 +0000
commitb96863b839ade8b79f6216567b6e5be6f881700e (patch)
treee6f449a4f666d6d6d5eb8af866d0801cb9ea19b1 /t
parenta6566820c258792b90db16cf731c02777286aba0 (diff)
downloadperl-b96863b839ade8b79f6216567b6e5be6f881700e.tar.gz
re_intuit_start(): don't decrease rx_origin
When calculating the new rx_origin after a successful check match, don't set it to a lower value than it already is. This can avoid having to do repeated HOP(check_at, -max_offset) over the same section of string, which makes the following take milliseconds rather than 10's of seconds: $s = "-a-bc" x 250_000; $s .= "1a1bc"; utf8::upgrade($s); $s =~ /\da\d{0,30000}bc/ or die;
Diffstat (limited to 't')
-rw-r--r--t/re/pat.t8
1 files changed, 7 insertions, 1 deletions
diff --git a/t/re/pat.t b/t/re/pat.t
index 9296808562..486238c804 100644
--- a/t/re/pat.t
+++ b/t/re/pat.t
@@ -20,7 +20,7 @@ BEGIN {
require './test.pl';
}
-plan tests => 715; # Update this when adding/deleting tests.
+plan tests => 716; # Update this when adding/deleting tests.
run_tests() unless caller;
@@ -1528,6 +1528,12 @@ EOP
$s=~ /ab.{1,2}x/;
pass("RT#120692 ab.{1,2} mustn't run slowly");
+
+ $s = "-a-bc" x 250_000;
+ $s .= "1a1bc";
+ utf8::upgrade($s);
+ ok($s =~ /\da\d{0,30000}bc/, "\\d{30000}");
+
}
# These are based on looking at the code in regcomp.c