summaryrefslogtreecommitdiff
path: root/embed.h
diff options
context:
space:
mode:
authorTony Cook <tony@develop-help.com>2021-02-10 11:18:45 +1100
committerPaul "LeoNerd" Evans <leonerd@leonerd.org.uk>2021-02-14 13:40:50 +0000
commit6b729d2440b795f848f610a8cc410a3f6be6388b (patch)
tree68143844990d5b45cbe0ceccf9b3fef2458a505a /embed.h
parent683e0651b057a7be4b2765ceb3d9f6617cd4c464 (diff)
downloadperl-6b729d2440b795f848f610a8cc410a3f6be6388b.tar.gz
try isn't treated as a sub call like eval is
The try change added code to pp_return to skip past try contexts when looking for the sub/sort/eval context to return from. This was only needed because cx_pusheval() sets si_cxsubix to the current frame and try uses that function to push it's context, that value is then used by the dopopto_cursub() macro to shortcut walking the context stack. Since we don't need to treat try as a sub for return, list vs array checks or lvalue sub checks, don't set si_cxsubix on try.
Diffstat (limited to 'embed.h')
-rw-r--r--embed.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/embed.h b/embed.h
index bb592b1d4e..10214db1fb 100644
--- a/embed.h
+++ b/embed.h
@@ -822,6 +822,7 @@
#define cx_pushloop_for(a,b,c) Perl_cx_pushloop_for(aTHX_ a,b,c)
#define cx_pushloop_plain(a) Perl_cx_pushloop_plain(aTHX_ a)
#define cx_pushsub(a,b,c,d) Perl_cx_pushsub(aTHX_ a,b,c,d)
+#define cx_pushtry(a,b) Perl_cx_pushtry(aTHX_ a,b)
#define cx_pushwhen(a) Perl_cx_pushwhen(aTHX_ a)
#define cx_topblock(a) Perl_cx_topblock(aTHX_ a)
#define gimme_V() Perl_gimme_V(aTHX)