summaryrefslogtreecommitdiff
path: root/sv.c
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2006-03-31 19:30:09 +0000
committerNicholas Clark <nick@ccl4.org>2006-03-31 19:30:09 +0000
commita8f8b6a7ca709d640a0de17910dcda7bb53b8cf5 (patch)
tree635e0c746ce339abe8dac35bf3cc8957f918eb99 /sv.c
parent9ddc1e7af8675795ad0346c1274fd40d4096c50f (diff)
downloadperl-a8f8b6a7ca709d640a0de17910dcda7bb53b8cf5.tar.gz
Need to dup any hints HV stored on the save stack.
p4raw-id: //depot/perl@27650
Diffstat (limited to 'sv.c')
-rw-r--r--sv.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sv.c b/sv.c
index d5cc44d190..73488761c1 100644
--- a/sv.c
+++ b/sv.c
@@ -10580,8 +10580,10 @@ Perl_ss_dup(pTHX_ PerlInterpreter *proto_perl, CLONE_PARAMS* param)
TOPINT(nss,ix) = i;
ptr = POPPTR(ss,ix);
TOPPTR(nss,ix) = Perl_refcounted_he_dup(aTHX_ ptr, param);
- /* FIXME - either dup the conditionally saved HV, or eliminate
- it by recreating eval's %^H from the cop */
+ if (i & HINT_LOCALIZE_HH) {
+ hv = (HV*)POPPTR(ss,ix);
+ TOPPTR(nss,ix) = hv_dup_inc(hv, param);
+ }
break;
case SAVEt_COMPPAD:
av = (AV*)POPPTR(ss,ix);