aboutsummaryrefslogtreecommitdiff
path: root/ltests.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2021-03-02 11:35:40 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2021-03-02 11:35:40 -0300
commit9a2de786de5da862404995ddd3408f7ad3d54ee8 (patch)
treed0c6eab13c95ac7a9c6148b9b63dd6df60d3f238 /ltests.c
parent5276973224066e591b0f1a79c3b091d395848ac4 (diff)
downloadlua-9a2de786de5da862404995ddd3408f7ad3d54ee8.tar.gz
lua-9a2de786de5da862404995ddd3408f7ad3d54ee8.tar.bz2
lua-9a2de786de5da862404995ddd3408f7ad3d54ee8.zip
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.)
Diffstat (limited to 'ltests.c')
-rw-r--r--ltests.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/ltests.c b/ltests.c
index da95d027..a50f7830 100644
--- a/ltests.c
+++ b/ltests.c
@@ -121,6 +121,7 @@ static void warnf (void *ud, const char *msg, int tocont) {
121 strcat(buff, msg); /* add new message to current warning */ 121 strcat(buff, msg); /* add new message to current warning */
122 if (!tocont) { /* message finished? */ 122 if (!tocont) { /* message finished? */
123 lua_unlock(L); 123 lua_unlock(L);
124 luaL_checkstack(L, 1, "warn stack space");
124 lua_getglobal(L, "_WARN"); 125 lua_getglobal(L, "_WARN");
125 if (!lua_toboolean(L, -1)) 126 if (!lua_toboolean(L, -1))
126 lua_pop(L, 1); /* ok, no previous unexpected warning */ 127 lua_pop(L, 1); /* ok, no previous unexpected warning */
@@ -142,6 +143,7 @@ static void warnf (void *ud, const char *msg, int tocont) {
142 } 143 }
143 case 2: { /* store */ 144 case 2: { /* store */
144 lua_unlock(L); 145 lua_unlock(L);
146 luaL_checkstack(L, 1, "warn stack space");
145 lua_pushstring(L, buff); 147 lua_pushstring(L, buff);
146 lua_setglobal(L, "_WARN"); /* assign message to global '_WARN' */ 148 lua_setglobal(L, "_WARN"); /* assign message to global '_WARN' */
147 lua_lock(L); 149 lua_lock(L);