diff --git a/lib/B/CC.pm b/lib/B/CC.pm index e0f890de5..75cb0542c 100644 --- a/lib/B/CC.pm +++ b/lib/B/CC.pm @@ -672,6 +672,9 @@ sub runtime { sub init_pp { $ppname = shift; $declare_ref = {}; + if ($runtime) { + $runtime->[-1]{values} = $runtime->[-1]{dbg} = []; + } runtime("dSP;"); declare( "I32", "oldsave" ); map { declare( "SV", "*$_" ) } qw(sv src dst left right); diff --git a/lib/B/Stackobj.pm b/lib/B/Stackobj.pm index b831e05b3..43466a6c6 100644 --- a/lib/B/Stackobj.pm +++ b/lib/B/Stackobj.pm @@ -411,7 +411,7 @@ sub B::Stackobj::Aelem::new { my $sv; # pop ix before av if ($av eq 'POPs' and $ix eq 'POPi') { - $sv = "({ oldsave = SvIVX(POPs); AvARRAY(POPs)[oldsave]; })"; + $sv = "({ ix = POPi; AvARRAY(POPs)[ix]; })"; } else { $sv = "AvARRAY($av)[$ix]"; }