Stack check in warning function for tests

The warning function using for tests need to check the stack before
pushing anything. (Warning functions are not expected to access a
Lua state, therefore they have no preallocated stack space.)
This commit is contained in:
Roberto Ierusalimschy
2021-03-02 11:35:40 -03:00
parent 5276973224
commit 9a2de786de

View File

@@ -121,6 +121,7 @@ static void warnf (void *ud, const char *msg, int tocont) {
strcat(buff, msg); /* add new message to current warning */ strcat(buff, msg); /* add new message to current warning */
if (!tocont) { /* message finished? */ if (!tocont) { /* message finished? */
lua_unlock(L); lua_unlock(L);
luaL_checkstack(L, 1, "warn stack space");
lua_getglobal(L, "_WARN"); lua_getglobal(L, "_WARN");
if (!lua_toboolean(L, -1)) if (!lua_toboolean(L, -1))
lua_pop(L, 1); /* ok, no previous unexpected warning */ lua_pop(L, 1); /* ok, no previous unexpected warning */
@@ -142,6 +143,7 @@ static void warnf (void *ud, const char *msg, int tocont) {
} }
case 2: { /* store */ case 2: { /* store */
lua_unlock(L); lua_unlock(L);
luaL_checkstack(L, 1, "warn stack space");
lua_pushstring(L, buff); lua_pushstring(L, buff);
lua_setglobal(L, "_WARN"); /* assign message to global '_WARN' */ lua_setglobal(L, "_WARN"); /* assign message to global '_WARN' */
lua_lock(L); lua_lock(L);