Change 13533 by jhi@alpha on 2001/12/08 15:13:39
Retract #11156 since Sarathy has found that it breaks code:
http://bugs.ActiveState.com/show_bug.cgi?id=18457
http://bugs.ActiveState.com/show_bug.cgi?id=18858
Affected files ...
.... //depot/perl/op.c#460 edit
.... //depot/perl/sv.c#495 edit
.... //depot/perl/t/op/pos.t#4 edit
Differences ...
==== //depot/perl/op.c#460 (text) ====
Index: perl/op.c
--- perl/op.c.~1~ Sat Dec 8 08:30:05 2001
+++ perl/op.c Sat Dec 8 08:30:05 2001
@@ -2065,15 +2065,9 @@
right->op_type == OP_SUBST ||
right->op_type == OP_TRANS)) {
right->op_flags |= OPf_STACKED;
- if ((right->op_type != OP_MATCH &&
- ! (right->op_type == OP_TRANS &&
- right->op_private & OPpTRANS_IDENTICAL)) ||
- /* if SV has magic, then match on original SV, not on its copy.
- see note in pp_helem() */
- (right->op_type == OP_MATCH &&
- (left->op_type == OP_AELEM ||
- left->op_type == OP_HELEM ||
- left->op_type == OP_AELEMFAST)))
+ if (right->op_type != OP_MATCH &&
+ ! (right->op_type == OP_TRANS &&
+ right->op_private & OPpTRANS_IDENTICAL))
left = mod(left, right->op_type);
if (right->op_type == OP_TRANS)
o = newBINOP(OP_NULL, OPf_STACKED, scalar(left), right);
==== //depot/perl/sv.c#495 (text) ====
Index: perl/sv.c
--- perl/sv.c.~1~ Sat Dec 8 08:30:05 2001
+++ perl/sv.c Sat Dec 8 08:30:05 2001
@@ -4455,9 +4455,9 @@
mg->mg_moremagic = SvMAGIC(sv);
SvMAGIC(sv) = mg;
- /* Some magic contains a reference loop, where the sv and object refer to
- each other. To avoid a reference loop that would prevent such objects
- being freed, we look for such loops and if we find one we avoid
+ /* Some magic sontains a reference loop, where the sv and object refer to
+ each other. To prevent a avoid a reference loop that would prevent such
+ objects being freed, we look for such loops and if we find one we avoid
incrementing the object refcount. */
if (!obj || obj == sv ||
how == PERL_MAGIC_arylen ||
==== //depot/perl/t/op/pos.t#4 (xtext) ====
Index: perl/t/op/pos.t
--- perl/t/op/pos.t.~1~ Sat Dec 8 08:30:05 2001
+++ perl/t/op/pos.t Sat Dec 8 08:30:05 2001
@@ -1,6 +1,6 @@
#!./perl
-print "1..7\n";
+print "1..4\n";
$x='banana';
$x=~/.a/g;
@@ -19,21 +19,5 @@
print "not " unless $x eq "0123 5678910?";
print "ok 4\n";
-# bug ID 20010704.003
-use Tie::Scalar;
-tie $y[0], Tie::StdScalar or die $!;
-$y[0] = "aaa";
-$y[0] =~ /./g;
-if (pos($y[0]) == 1) {print "ok 5\n"} else {print "not ok 5\n"}
-$x = 0;
-$y[0] = "aaa";
-$y[$x] =~ /./g;
-if (pos($y[$x]) == 1) {print "ok 6\n"} else {print "not ok 6\n"}
-untie $y[0];
-tie $y{'abc'}, Tie::StdScalar or die $!;
-$y{'abc'} = "aaa";
-$y{'abc'} =~ /./g;
-if (pos($y{'abc'}) == 1) {print "ok 7\n"} else {print "not ok 7\n"}
-untie $y{'abc'};
End of Patch.