diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2003-03-09 10:54:10 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2003-03-09 10:54:10 +0000 |
commit | 16e1b94401335fe86d42338fc14a6680fc469ab0 (patch) | |
tree | 2bd9c701593ff14adfbad22fe6abcaf18787a499 | |
parent | c517dc2b8939cf1b60644570194e6918e1629206 (diff) | |
download | perl-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.c | 4 | ||||
-rwxr-xr-x | t/op/pat.t | 12 |
2 files changed, 11 insertions, 5 deletions
@@ -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 |