From fbe9840a2346a4b73e9460e82a6159ddc062c90f Mon Sep 17 00:00:00 2001 From: Laurence Tratt Date: Sun, 14 Jun 2026 12:08:32 +0100 Subject: [PATCH] Use `yk_longjmp`. This fixes problems with `pcall` calling `longjmp` during tracing. --- src/ldo.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/ldo.c b/src/ldo.c index d50b9fa..938fe24 100644 --- a/src/ldo.c +++ b/src/ldo.c @@ -95,13 +95,21 @@ static void LUAI_TRY (lua_State *L, lua_longjmp *c, Pfunc f, void *ud) { #elif defined(LUA_USE_POSIX) /* }{ */ /* in POSIX, use _longjmp/_setjmp (more efficient) */ -#define LUAI_THROW(L,c) _longjmp((c)->b, 1) +# ifdef USE_YK +#define LUAI_THROW(L,c) yk_longjmp((c)->b, 1) +# else +#define LUAI_THROW(L,c) longjmp((c)->b, 1) +# endif #define LUAI_TRY(L,c,f,ud) if (_setjmp((c)->b) == 0) ((f)(L, ud)) #else /* }{ */ /* ISO C handling with long jumps */ +# ifdef USE_YK +#define LUAI_THROW(L,c) yk_longjmp((c)->b, 1) +# else #define LUAI_THROW(L,c) longjmp((c)->b, 1) +# endif #define LUAI_TRY(L,c,f,ud) if (setjmp((c)->b) == 0) ((f)(L, ud)) #endif /* } */