Change 27547 by [EMAIL PROTECTED] on 2006/03/20 10:11:21

        Subject: [PATCH blead] Re: [perl #38710] localised stash slice
        From: Rick Delaney <[EMAIL PROTECTED]>
        Date: Sat, 18 Mar 2006 19:52:11 -0500
        Message-ID: <[EMAIL PROTECTED]>
        
        One can now localize slices.

Affected files ...

... //depot/perl/pp.c#528 edit
... //depot/perl/t/op/local.t#29 edit

Differences ...

==== //depot/perl/pp.c#528 (text) ====
Index: perl/pp.c
--- perl/pp.c#527~27334~        2006-02-27 03:06:30.000000000 -0800
+++ perl/pp.c   2006-03-20 02:11:21.000000000 -0800
@@ -3844,13 +3844,17 @@
                 DIE(aTHX_ PL_no_helem_sv, keysv);
             }
             if (localizing) {
-                if (preeminent)
-                    save_helem(hv, keysv, svp);
-                else {
-                    STRLEN keylen;
-                    const char *key = SvPV_const(keysv, keylen);
-                    SAVEDELETE(hv, savepvn(key,keylen), keylen);
-                }
+               if (HvNAME_get(hv) && isGV(*svp))
+                   save_gp((GV*)*svp, !(PL_op->op_flags & OPf_SPECIAL));
+               else {
+                   if (preeminent)
+                       save_helem(hv, keysv, svp);
+                   else {
+                       STRLEN keylen;
+                       const char *key = SvPV_const(keysv, keylen);
+                       SAVEDELETE(hv, savepvn(key,keylen), keylen);
+                   }
+               }
             }
         }
         *MARK = svp ? *svp : &PL_sv_undef;

==== //depot/perl/t/op/local.t#29 (xtext) ====
Index: perl/t/op/local.t
--- perl/t/op/local.t#28~27495~ 2006-03-14 01:55:17.000000000 -0800
+++ perl/t/op/local.t   2006-03-20 02:11:21.000000000 -0800
@@ -362,10 +362,8 @@
        ::ok(f1() eq "f1", "localised sub restored");
        {
                local @Other::{qw/ f1 f2 /} = (sub { "j1" }, sub { "j2" });
-               local $::TODO = "localisation of stash slice not working";
                ::ok(f1() eq "j1", "localised sub via stash slice");
                ::ok(f2() eq "j2", "localised sub via stash slice");
-               undef $::TODO;
        }
        ::ok(f1() eq "f1", "localised sub restored");
        ::ok(f2() eq "f2", "localised sub restored");
End of Patch.

Reply via email to