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.