diff --git a/pad.c b/pad.c index 1799562217..933c8bc43d 100644 --- a/pad.c +++ b/pad.c @@ -114,7 +114,7 @@ write is called (if necessary). The flag C is cleared on lexicals each time the C is executed, and set on scope exit. This allows the C<"Variable $x is not available"> warning -to be generated in evals, such as +to be generated in evals, such as { my $x = 1; sub f { eval '$x'} } f(); @@ -1183,7 +1183,7 @@ S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv, DEBUG_Xv(PerlIO_printf(Perl_debug_log, "Pad findlex cv=0x%" UVxf " matched: offset=%ld flags=0x%lx index=%lu\n", PTR2UV(cv), (long)offset, (unsigned long)*out_flags, - (unsigned long) PARENT_PAD_INDEX(*out_name) + (unsigned long) PARENT_PAD_INDEX(*out_name) )); } @@ -2012,7 +2012,7 @@ S_cv_clone_pad(pTHX_ CV *proto, CV *cv, CV *outside, HV *cloned, S_unavailable(aTHX_ namesv); sv = NULL; } - else + else SvREFCNT_inc_simple_void_NN(sv); } if (!sv) { @@ -2573,8 +2573,8 @@ Perl_padlist_dup(pTHX_ PADLIST *srcpad, CLONE_PARAMS *param) interacts with lexicals. */ pad1a[ix] = sv_dup_inc(oldpad[ix], param); } else { - SV *sv; - + SV *sv; + if (sigil == '@') sv = MUTABLE_SV(newAV()); else if (sigil == '%')