diff --git a/src/lj_api.c b/src/lj_api.c index f1cfebbc..f53ecc35 100644 --- a/src/lj_api.c +++ b/src/lj_api.c @@ -1210,11 +1210,12 @@ LUA_API int lua_yield(lua_State *L, int nresults) setcont(top, lj_cont_hook); if (LJ_FR2) top++; setframe_pc(top, cframe_pc(cf)-1); - if (LJ_FR2) top++; + top++; setframe_gc(top, obj2gco(L), LJ_TTHREAD); + if (LJ_FR2) top++; setframe_ftsz(top, ((char *)(top+1)-(char *)L->base)+FRAME_CONT); L->top = L->base = top+1; -#if LJ_TARGET_X64 +#if ((defined(__GNUC__) || defined(__clang__)) && (LJ_TARGET_X64 || defined(LUAJIT_UNWIND_EXTERNAL)) && !LJ_NO_UNWIND) || LJ_TARGET_WINDOWS lj_err_throw(L, LUA_YIELD); #else L->cframe = NULL;