summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pp.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/pp.h b/pp.h
index 5cde92b047..0ba877f22a 100644
--- a/pp.h
+++ b/pp.h
@@ -448,8 +448,12 @@ Does not use C<TARG>. See also C<XPUSHu>, C<mPUSHu> and C<PUSHu>.
SETTARG; \
PUTBACK; \
if (jump) { \
+ OP *jump_o = NORMAL->op_next; \
+ while (jump_o->op_type == OP_NULL) \
+ jump_o = jump_o->op_next; \
+ assert(jump_o->op_type == OP_ENTERSUB); \
PL_markstack_ptr--; \
- return NORMAL->op_next->op_next; \
+ return jump_o->op_next; \
} \
return NORMAL; \
} \