Skip to content

Commit 08242ee

Browse files
committed
py/nlrsetjmp: Add check for failed NLR jump.
Also optimise the function so it only needs to call the MP_STATE_THREAD macro once (following how other nlr code is written).
1 parent fe79234 commit 08242ee

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

py/nlrsetjmp.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,14 @@
2929
#if MICROPY_NLR_SETJMP
3030

3131
void nlr_setjmp_jump(void *val) {
32-
nlr_buf_t *buf = MP_STATE_THREAD(nlr_top);
33-
MP_STATE_THREAD(nlr_top) = buf->prev;
34-
buf->ret_val = val;
35-
longjmp(buf->jmpbuf, 1);
32+
nlr_buf_t **top_ptr = &MP_STATE_THREAD(nlr_top);
33+
nlr_buf_t *top = *top_ptr;
34+
if (top == NULL) {
35+
nlr_jump_fail(val);
36+
}
37+
top->ret_val = val;
38+
*top_ptr = top->prev;
39+
longjmp(top->jmpbuf, 1);
3640
}
3741

3842
#endif

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy