summaryrefslogtreecommitdiff
path: root/pad.c
diff options
context:
space:
mode:
Diffstat (limited to 'pad.c')
-rw-r--r--pad.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/pad.c b/pad.c
index 2587e43818..4b75998cac 100644
--- a/pad.c
+++ b/pad.c
@@ -2864,6 +2864,16 @@ Perl_padname_dup(pTHX_ PADNAME *src, CLONE_PARAMS *param)
PadnameTYPE (dst) = (HV *)sv_dup_inc((SV *)PadnameTYPE(src), param);
PadnameOURSTASH(dst) = (HV *)sv_dup_inc((SV *)PadnameOURSTASH(src),
param);
+ if(PadnameIsFIELD(src)) {
+ struct padname_fieldinfo *sinfo = PadnameFIELDINFO(src);
+ struct padname_fieldinfo *dinfo;
+ Newxz(dinfo, 1, struct padname_fieldinfo);
+
+ dinfo->fieldix = sinfo->fieldix;
+ dinfo->fieldstash = hv_dup_inc(sinfo->fieldstash, param);
+
+ PadnameFIELDINFO(dst) = dinfo;
+ }
dst->xpadn_low = src->xpadn_low;
dst->xpadn_high = src->xpadn_high;
dst->xpadn_gen = src->xpadn_gen;