summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2003-03-09 10:54:10 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2003-03-09 10:54:10 +0000
commit16e1b94401335fe86d42338fc14a6680fc469ab0 (patch)
tree2bd9c701593ff14adfbad22fe6abcaf18787a499
parentc517dc2b8939cf1b60644570194e6918e1629206 (diff)
downloadperl-16e1b94401335fe86d42338fc14a6680fc469ab0.tar.gz
From Inaba Hiroto: re_intuit_start set a value to
PL_bostr before calling find_byclass when regexp has ROPT_UTF8 flag on. But right value for PL_bostr is set before re_intuit_start is called. PL_regdata is always assigned by cache_re(), so the whole if(prog->reganch & ROPT_UTF8){} can be deleted. p4raw-id: //depot/perl@18858
-rw-r--r--regexec.c4
-rwxr-xr-xt/op/pat.t12
2 files changed, 11 insertions, 5 deletions
diff --git a/regexec.c b/regexec.c
index 6d18de4a7c..4692dcdf04 100644
--- a/regexec.c
+++ b/regexec.c
@@ -852,10 +852,6 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
char *startpos = strbeg;
t = s;
- if (prog->reganch & ROPT_UTF8) {
- PL_regdata = prog->data;
- PL_bostr = startpos;
- }
cache_re(prog);
s = find_byclass(prog, prog->regstclass, s, endpos, startpos, 1);
if (!s) {
diff --git a/t/op/pat.t b/t/op/pat.t
index 54f7d144d7..85ec2c230a 100755
--- a/t/op/pat.t
+++ b/t/op/pat.t
@@ -3149,4 +3149,14 @@ ok("bbbbac" =~ /$pattern/ && $1 eq 'a', "[perl #3547]");
ok("\x{100}\n" =~ /\x{100}\n$/, "UTF8 length cache and fbm_compile");
}
-# last test 995
+{
+ package Str;
+ use overload q/""/ => sub { ${$_[0]}; };
+ sub new { my ($c, $v) = @_; bless \$v, $c; }
+
+ package main;
+ $_ = Str->new("a\x{100}/\x{100}b");
+ ok(join(":", /\b(.)\x{100}/g) eq "a:/", "re_intuit_start and PL_bostr");
+}
+
+# last test 996