#define PUSHSUB(cx) \
cx->blk_sub.cv = cv; \
- cx->blk_sub.olddepth = CvDEPTH(cv); \
+ cx->blk_sub.olddepth = (U16)CvDEPTH(cv); \
cx->blk_sub.hasargs = hasargs; \
cx->blk_sub.lval = PL_op->op_private & \
(OPpLVAL_INTRO|OPpENTERSUB_INARGS);
# define CX_ITERDATA_SET(cx,idata) \
cx->blk_loop.oldcurpad = PL_curpad; \
if ((cx->blk_loop.iterdata = (idata))) \
- cx->blk_loop.itersave = SvREFCNT_inc(*CxITERVAR(cx));
+ cx->blk_loop.itersave = SvREFCNT_inc(*CxITERVAR(cx)); \
+ else \
+ cx->blk_loop.itersave = Nullsv;
#else
# define CxITERVAR(c) ((c)->blk_loop.itervar)
# define CX_ITERDATA_SET(cx,ivar) \
if ((cx->blk_loop.itervar = (SV**)(ivar))) \
- cx->blk_loop.itersave = SvREFCNT_inc(*CxITERVAR(cx));
+ cx->blk_loop.itersave = SvREFCNT_inc(*CxITERVAR(cx)); \
+ else \
+ cx->blk_loop.itersave = Nullsv;
#endif
#define PUSHLOOP(cx, dat, s) \
cx->blk_oldscopesp = PL_scopestack_ix, \
cx->blk_oldretsp = PL_retstack_ix, \
cx->blk_oldpm = PL_curpm, \
- cx->blk_gimme = gimme; \
+ cx->blk_gimme = (U8)gimme; \
DEBUG_l( PerlIO_printf(Perl_debug_log, "Entering block %ld, type %s\n", \
(long)cxstack_ix, PL_block_type[CxTYPE(cx)]); )