From: Mike Pall Date: Sun, 10 Jun 2012 21:40:53 +0000 (+0200) Subject: Fix userdata __gc separations at state close. X-Git-Tag: v2.0.0-beta11~186 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=58622937c06c3d689d69569907a81a1f7c3f1a96;p=thirdparty%2FLuaJIT.git Fix userdata __gc separations at state close. --- diff --git a/src/lj_state.c b/src/lj_state.c index 77c6df67..38525319 100644 --- a/src/lj_state.c +++ b/src/lj_state.c @@ -243,16 +243,16 @@ LUA_API void lua_close(lua_State *L) G2J(g)->state = LJ_TRACE_IDLE; lj_dispatch_update(g); #endif - for (i = 0; i < 10; ) { + for (i = 0;;) { hook_enter(g); L->status = 0; L->cframe = NULL; L->base = L->top = tvref(L->stack) + 1; if (lj_vm_cpcall(L, NULL, NULL, cpfinalize) == 0) { + if (++i >= 10) break; lj_gc_separateudata(g, 1); /* Separate udata again. */ if (gcref(g->gc.mmudata) == NULL) /* Until nothing is left to do. */ break; - i++; } } close_state(L);