summaryrefslogtreecommitdiff
path: root/pp_ctl.c
diff options
context:
space:
mode:
authorDavid Mitchell <davem@iabyn.com>2019-09-23 14:02:49 +0100
committerDavid Mitchell <davem@iabyn.com>2019-09-23 14:11:44 +0100
commit843fe1cac3dd0142b6beb4102c4616fff1a0ac38 (patch)
treeff0645cd31e98a5f674278978dd0740fb6474e7b /pp_ctl.c
parent5b6f744373565ad7bd6bbd484c9e09bc90a0125e (diff)
downloadperl-843fe1cac3dd0142b6beb4102c4616fff1a0ac38.tar.gz
si_cxsubix not restored on goto &XS_sub
My recent merge commit v5.31.3-198-gd2cd363728 (temporarily reverted by v5.31.4-0-g20ef288c53) added a si_cxsubix field to the stackinfo struct to track the most recent sub context. This field wasn't being restored correctly with 'goto &XS-sub', and broke Test::Deep.
Diffstat (limited to 'pp_ctl.c')
-rw-r--r--pp_ctl.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/pp_ctl.c b/pp_ctl.c
index af95a9e50b..5bd9376b03 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -2962,6 +2962,9 @@ PP(pp_goto)
* this is a cx_popblock(), less all the stuff we already did
* for cx_topblock() earlier */
PL_curcop = cx->blk_oldcop;
+ /* this is cx_popsub, less all the stuff we already did */
+ PL_curstackinfo->si_cxsubix = cx->blk_sub.old_cxsubix;
+
CX_POP(cx);
/* Push a mark for the start of arglist */