On Wed, Jan 09, 2008 at 11:58:03PM +0100, Marcus Holland-Moritz wrote:----Output of .../pBQVFAg/
[email protected]/bin/perl----
ok 248
ok 249
----EOF ($?='0')----
----Output of .../pDegODZ/
[email protected]/bin/perl----
----EOF ($?='11')----
Fixed with change 32932
I'm still no nearer on working out what is up with that use re 'eval'; error.
Nicholas Clark
Change 32932 by
[email protected] on 2008/01/09 23:26:14
Fix the bug introduced by the bug fix of change 30755.
(Certain regexps could SEGV if cloned).
Affected files ...
... //depot/perl/regcomp.c#646 edit
... //depot/perl/t/op/pat.t#303 edit
Differences ...
==== //depot/perl/regcomp.c#646 (text) ====
@@ -9409,7 +9409,9 @@
/* Do it this way to avoid reading from *r after the StructCopy().
That way, if any of the sv_dup_inc()s dislodge *r from the L1
cache, it doesn't matter. */
- const bool anchored = r->check_substr == r->anchored_substr;
+ const bool anchored = r->check_substr
+ ? r->check_substr == r->anchored_substr
+ : r->check_utf8 == r->anchored_utf8;
Newx(ret->substrs, 1, struct reg_substr_data);
StructCopy(r->substrs, ret->substrs, struct reg_substr_data);
@@ -9432,6 +9434,12 @@
ret->check_substr = ret->float_substr;
ret->check_utf8 = ret->float_utf8;
}
+ } else if (ret->check_utf8) {
+ if (anchored) {
+ ret->check_utf8 = ret->anchored_utf8;
+ } else {
+ ret->check_utf8 = ret->float_utf8;
+ }
}
}
==== //depot/perl/t/op/pat.t#303 (xtext) ====
@@ -1297,10 +1297,7 @@
print "not " unless "\x{abcd}" =~ /\x{abcd}/;
print "ok 247\n";
-if ($::running_as_thread) {
- print "not ok 248 # TODO & SKIP: SEGVs in 5.10 when threaded\n";
- print "not ok 249 # TODO & SKIP: SEGVs in 5.10 when threaded\n";
-} else {
+{
# bug id 20001008.001
$test = 248;