Change 18858 by [EMAIL PROTECTED] on 2003/03/09 10:54:10
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.
Affected files ...
... //depot/perl/regexec.c#306 edit
... //depot/perl/t/op/pat.t#198 edit
Differences ...
==== //depot/perl/regexec.c#306 (text) ====
Index: perl/regexec.c
--- perl/regexec.c#305~18801~ Sun Mar 2 07:24:22 2003
+++ perl/regexec.c Sun Mar 9 02:54:10 2003
@@ -852,10 +852,6 @@
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) {
==== //depot/perl/t/op/pat.t#198 (xtext) ====
Index: perl/t/op/pat.t
--- perl/t/op/pat.t#197~18857~ Sun Mar 9 02:46:23 2003
+++ perl/t/op/pat.t Sun Mar 9 02:54:10 2003
@@ -3149,4 +3149,14 @@
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
End of Patch.