summaryrefslogtreecommitdiff
path: root/pp_hot.c
diff options
context:
space:
mode:
Diffstat (limited to 'pp_hot.c')
-rw-r--r--pp_hot.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/pp_hot.c b/pp_hot.c
index f963f0cff9..4e55f2678b 100644
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -1917,7 +1917,7 @@ PP(pp_iter)
/* iterate ($min .. $max) */
if (CxTYPE(cx) != CXt_LOOP_LAZYIV) {
/* string increment */
- register SV* cur = cx->blk_loop.iterlval;
+ register SV* cur = cx->blk_loop.lval_max_u.iterlval;
STRLEN maxlen = 0;
const char *max =
SvOK((SV*)av) ?
@@ -1945,8 +1945,7 @@ PP(pp_iter)
RETPUSHNO;
}
/* integer increment */
- assert(!cx->blk_loop.iterlval);
- if (cx->blk_loop.iterix > cx->blk_loop.itermax)
+ if (cx->blk_loop.iterix > cx->blk_loop.lval_max_u.itermax)
RETPUSHNO;
/* don't risk potential race */
@@ -1966,10 +1965,10 @@ PP(pp_iter)
/* Handle end of range at IV_MAX */
if ((cx->blk_loop.iterix == IV_MIN) &&
- (cx->blk_loop.itermax == IV_MAX))
+ (cx->blk_loop.lval_max_u.itermax == IV_MAX))
{
cx->blk_loop.iterix++;
- cx->blk_loop.itermax++;
+ cx->blk_loop.lval_max_u.itermax++;
}
RETPUSHYES;
@@ -2014,7 +2013,7 @@ PP(pp_iter)
else
sv = &PL_sv_undef;
if (av != PL_curstack && sv == &PL_sv_undef) {
- SV *lv = cx->blk_loop.iterlval;
+ SV *lv = cx->blk_loop.lval_max_u.iterlval;
if (lv && SvREFCNT(lv) > 1) {
SvREFCNT_dec(lv);
lv = NULL;
@@ -2022,7 +2021,7 @@ PP(pp_iter)
if (lv)
SvREFCNT_dec(LvTARG(lv));
else {
- lv = cx->blk_loop.iterlval = newSV_type(SVt_PVLV);
+ lv = cx->blk_loop.lval_max_u.iterlval = newSV_type(SVt_PVLV);
LvTYPE(lv) = 'y';
sv_magic(lv, NULL, PERL_MAGIC_defelem, NULL, 0);
}