1
0
mirror of https://github.com/lua/lua.git synced 2025-01-28 06:03:00 +08:00

bug: 'lua_pushcclosure' should not call the GC when 'n' is zero

This commit is contained in:
Roberto Ierusalimschy 2017-12-06 16:08:03 -02:00
parent c7ee7fe026
commit ae11e37e53

7
lapi.c
View File

@ -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);
}