summaryrefslogtreecommitdiff
path: root/py/nlrsetjmp.c
diff options
context:
space:
mode:
Diffstat (limited to 'py/nlrsetjmp.c')
-rw-r--r--py/nlrsetjmp.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/py/nlrsetjmp.c b/py/nlrsetjmp.c
index 6ddad3793..63376a553 100644
--- a/py/nlrsetjmp.c
+++ b/py/nlrsetjmp.c
@@ -28,7 +28,15 @@
#if MICROPY_NLR_SETJMP
-NORETURN void nlr_jump_tail(nlr_buf_t *top) {
+void nlr_setjmp_jump(void *val) {
+ nlr_buf_t **top_ptr = &MP_STATE_THREAD(nlr_top);
+ nlr_buf_t *top = *top_ptr;
+ if (top == NULL) {
+ nlr_jump_fail(val);
+ }
+ top->ret_val = val;
+ MP_NLR_RESTORE_PYSTACK(top);
+ *top_ptr = top->prev;
longjmp(top->jmpbuf, 1);
}