Change 31206 by [EMAIL PROTECTED] on 2007/05/12 22:42:09

        Subject:  [PATCH] Disable slurping assigned of split when PL_madskills
        From:  Gerard Goossen <[EMAIL PROTECTED]>
        Date:    Tue May 8 15:15:09 2007 +0200
        Message-Id:  <[EMAIL PROTECTED]>

Affected files ...

... //depot/perl/mad/Nomad.pm#4 edit
... //depot/perl/op.c#940 edit
... //depot/perl/op.h#180 edit

Differences ...

==== //depot/perl/mad/Nomad.pm#4 (xtext) ====
Index: perl/mad/Nomad.pm
--- perl/mad/Nomad.pm#3~31204~  2007-05-12 15:40:05.000000000 -0700
+++ perl/mad/Nomad.pm   2007-05-12 15:42:09.000000000 -0700
@@ -2199,16 +2199,6 @@
 package PLXML::op_unpack;
 package PLXML::op_pack;
 package PLXML::op_split;
-
-sub ast {
-    my $self = shift;
-    my $results = $self->SUPER::ast(@_);
-    if (my @dest = $self->madness('R')) {
-       return PLXML::op_aassign->newtype->new(Kids => [EMAIL PROTECTED], 
$self->madness('ox'), $results]);
-    }
-    return $results;
-}
-
 package PLXML::op_join;
 package PLXML::op_list;
 

==== //depot/perl/op.c#940 (text) ====
Index: perl/op.c
--- perl/op.c#939~31205~        2007-05-12 15:41:17.000000000 -0700
+++ perl/op.c   2007-05-12 15:42:09.000000000 -0700
@@ -4073,7 +4073,7 @@
                o->op_private |= OPpASSIGN_COMMON;
        }
 
-       if (right && right->op_type == OP_SPLIT) {
+       if (right && right->op_type == OP_SPLIT && !PL_madskills) {
            OP* tmpop = ((LISTOP*)right)->op_first;
            if (tmpop && (tmpop->op_type == OP_PUSHRE)) {
                PMOP * const pm = (PMOP*)tmpop;
@@ -4103,11 +4103,7 @@
                        tmpop = ((UNOP*)tmpop)->op_first; /* to pushmark */
                        tmpop->op_sibling = NULL;       /* don't free split */
                        right->op_next = tmpop->op_next;  /* fix starting loc */
-#ifdef PERL_MAD
-                       op_getmad(o,right,'R');         /* blow off assign */
-#else
                        op_free(o);                     /* blow off assign */
-#endif
                        right->op_flags &= ~OPf_WANT;
                                /* "I don't know and I don't care." */
                        return right;

==== //depot/perl/op.h#180 (text) ====
Index: perl/op.h
--- perl/op.h#179~31204~        2007-05-12 15:40:05.000000000 -0700
+++ perl/op.h   2007-05-12 15:42:09.000000000 -0700
@@ -712,7 +712,6 @@
  * Q       optimized qw//
  * r       expression producing R
  * R       tr/E/R/ s/E/R/
- * R       assign slurped by split
  * s       sub signature
  * S       use import stub (no import)
  * S       retired sort block
End of Patch.

Reply via email to