From 58622937c06c3d689d69569907a81a1f7c3f1a96 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Sun, 10 Jun 2012 23:40:53 +0200 Subject: [PATCH] Fix userdata __gc separations at state close. --- src/lj_state.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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); -- 2.11.4.GIT