diff options
-rw-r--r-- | sv.c | 5 | ||||
-rwxr-xr-x | t/op/glob.t | 10 |
2 files changed, 9 insertions, 6 deletions
@@ -3215,12 +3215,7 @@ Perl_sv_setsv_flags(pTHX_ SV *dstr, register SV *sstr, I32 flags) #endif if (intro) { - GP *gp; - gp_free((GV*)dstr); GvINTRO_off(dstr); /* one-shot flag */ - Newz(602,gp, 1, GP); - GvGP(dstr) = gp_ref(gp); - GvSV(dstr) = NEWSV(72,0); GvLINE(dstr) = CopLINE(PL_curcop); GvEGV(dstr) = (GV*)dstr; } diff --git a/t/op/glob.t b/t/op/glob.t index 98efc3d65a..2eb371ae35 100755 --- a/t/op/glob.t +++ b/t/op/glob.t @@ -5,7 +5,7 @@ BEGIN { @INC = '../lib'; } -print "1..7\n"; +print "1..10\n"; @oops = @ops = <op/*>; @@ -48,3 +48,11 @@ for (1..2) { ++$i; } print $i == 2 ? "ok 7\n" : "not ok 7\n"; + +# [ID 20010526.001] localized glob loses value when assigned to + +$j=1; %j=(a=>1); @j=(1); local *j=*j; *j = sub{}; + +print $j == 1 ? "ok 8\n" : "not ok 8\n"; +print $j{a} == 1 ? "ok 9\n" : "not ok 9\n"; +print $j[0] == 1 ? "ok 10\n" : "not ok 10\n"; |