diff options
Diffstat (limited to 'py/nlrsetjmp.c')
| -rw-r--r-- | py/nlrsetjmp.c | 10 |
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); } |
