From ae11e37e53be81f1d1eb21dde02dd26d6a21c194 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Wed, 6 Dec 2017 16:08:03 -0200 Subject: bug: 'lua_pushcclosure' should not call the GC when 'n' is zero --- lapi.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lapi.c b/lapi.c index 181c90d6..3098cb9c 100644 --- a/lapi.c +++ b/lapi.c @@ -1,5 +1,5 @@ /* -** $Id: lapi.c,v 2.276 2017/11/07 13:25:26 roberto Exp roberto $ +** $Id: lapi.c,v 2.277 2017/11/23 19:29:04 roberto Exp roberto $ ** Lua API ** See Copyright Notice in lua.h */ @@ -550,6 +550,7 @@ LUA_API void lua_pushcclosure (lua_State *L, lua_CFunction fn, int n) { lua_lock(L); if (n == 0) { setfvalue(s2v(L->top), fn); + api_incr_top(L); } else { CClosure *cl; @@ -563,9 +564,9 @@ LUA_API void lua_pushcclosure (lua_State *L, lua_CFunction fn, int n) { /* does not need barrier because closure is white */ } setclCvalue(L, s2v(L->top), cl); + api_incr_top(L); + luaC_checkGC(L); } - api_incr_top(L); - luaC_checkGC(L); lua_unlock(L); } -- cgit v1.2.3-55-g6feb