diff options
author | David Mitchell <davem@iabyn.com> | 2012-11-13 12:20:34 +0000 |
---|---|---|
committer | David Mitchell <davem@iabyn.com> | 2012-11-15 22:41:07 +0000 |
commit | f38aa8823d6f75da1eeeebd5c4c9f451838bc770 (patch) | |
tree | 921afbc7463d5d5581a82636535946ea76d9a241 /pp_hot.c | |
parent | a8a20bb606d6f1faffb9dd19f02579f3ce642620 (diff) | |
download | perl-f38aa8823d6f75da1eeeebd5c4c9f451838bc770.tar.gz |
pp_iter: a bit more refactoring of CXt_LOOP_FOR branch
Diffstat (limited to 'pp_hot.c')
-rw-r--r-- | pp_hot.c | 12 |
1 files changed, 6 insertions, 6 deletions
@@ -1996,23 +1996,23 @@ PP(pp_iter) sv = AvARRAY(av)[ix]; } - if (sv && SvIS_FREED(sv)) { - *itersvp = NULL; - Perl_croak(aTHX_ "Use of freed value in iteration"); - } - if (sv) { + if (SvIS_FREED(sv)) { + *itersvp = NULL; + Perl_croak(aTHX_ "Use of freed value in iteration"); + } SvTEMP_off(sv); SvREFCNT_inc_simple_void_NN(sv); } else sv = &PL_sv_undef; + if (!av_is_stack && sv == &PL_sv_undef) { SV *lv = newSV_type(SVt_PVLV); LvTYPE(lv) = 'y'; sv_magic(lv, NULL, PERL_MAGIC_defelem, NULL, 0); LvTARG(lv) = SvREFCNT_inc_simple(av); - LvTARGOFF(lv) = cx->blk_loop.state_u.ary.ix; + LvTARGOFF(lv) = ix; LvTARGLEN(lv) = (STRLEN)UV_MAX; sv = lv; } |