Panic functions should not raise errors

The standard panic function was using 'lua_tostring', which may raise
a memory-allocation error if error value is a number.
This commit is contained in:
Roberto Ierusalimschy
2023-11-24 16:08:55 -03:00
parent 7923dbbf72
commit 842a83f09c
3 changed files with 14 additions and 4 deletions

View File

@@ -73,8 +73,9 @@ static void badexit (const char *fmt, const char *s1, const char *s2) {
static int tpanic (lua_State *L) {
const char *msg = lua_tostring(L, -1);
if (msg == NULL) msg = "error object is not a string";
const char *msg = (lua_type(L, -1) == LUA_TSTRING)
? lua_tostring(L, -1)
: "error object is not a string";
return (badexit("PANIC: unprotected error in call to Lua API (%s)\n",
msg, NULL),
0); /* do not return to Lua */