summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/B/t/f_map.t12
-rw-r--r--op.c7
2 files changed, 12 insertions, 7 deletions
diff --git a/ext/B/t/f_map.t b/ext/B/t/f_map.t
index 8e614a6ba9..243058c8de 100644
--- a/ext/B/t/f_map.t
+++ b/ext/B/t/f_map.t
@@ -57,32 +57,32 @@ checkOptree(note => q{},
# 2 <0> pushmark s
# 3 <0> pushmark s
# 4 <#> gv[*nums] s
-# 5 <1> rv2av[t7] lKM/1
+# 5 <1> rv2av[t6] lKM/1
# 6 <@> mapstart lK
-# 7 <|> mapwhile(other->8)[t8] lK
+# 7 <|> mapwhile(other->8)[t7] lK
# 8 <#> gvsv[*_] s
# 9 <1> chr[t5] sK/1
# goto 7
# a <0> pushmark s
# b <#> gv[*chars] s
# c <1> rv2av[t2] lKRM*/1
-# d <2> aassign[t9] KS/COMMON
+# d <2> aassign[t8] KS/COMMON
# e <1> leavesub[1 ref] K/REFC,1
EOT_EOT
# 1 <;> nextstate(main 559 (eval 15):1) v
# 2 <0> pushmark s
# 3 <0> pushmark s
# 4 <$> gv(*nums) s
-# 5 <1> rv2av[t4] lKM/1
+# 5 <1> rv2av[t2] lKM/1
# 6 <@> mapstart lK
-# 7 <|> mapwhile(other->8)[t5] lK
+# 7 <|> mapwhile(other->8)[t4] lK
# 8 <$> gvsv(*_) s
# 9 <1> chr[t3] sK/1
# goto 7
# a <0> pushmark s
# b <$> gv(*chars) s
# c <1> rv2av[t1] lKRM*/1
-# d <2> aassign[t6] KS/COMMON
+# d <2> aassign[t5] KS/COMMON
# e <1> leavesub[1 ref] K/REFC,1
EONT_EONT
diff --git a/op.c b/op.c
index cce6197071..618f06be3a 100644
--- a/op.c
+++ b/op.c
@@ -6358,8 +6358,13 @@ Perl_ck_fun(pTHX_ OP *o)
listkids(o);
}
else if (PL_opargs[type] & OA_DEFGV) {
+ OP *newop = newUNOP(type, 0, newDEFSVOP());
+#ifdef PERL_MAD
+ op_getmad(o,newop,'O');
+#else
op_free(o);
- return newUNOP(type, 0, newDEFSVOP());
+#endif
+ return newop;
}
if (oa) {