pbx_lua: Support displaying lua error message if no debug table exists

The lua_error_function assumed that lua's debug table and traceback function
are always accessible, which is not the case. This fixes the error message
'Error in the lua error handler' triggred by switch exec() function.
If this happens lua's error message is shown without traceback.

Change-Id: I34ba0a098f1ae06a3af7b4d1b098bd43f42f96c8
This commit is contained in:
Christof Lauber
2018-04-25 08:57:39 +02:00
parent a9e45eb5c9
commit 9c9f314f64

View File

@@ -805,7 +805,19 @@ static int lua_error_function(lua_State *L)
lua_pushliteral(L, "\n");
lua_getglobal(L, "debug");
if (!lua_istable(L, -1)) {
/* Have no 'debug' table for whatever reason */
lua_pop(L, 2);
/* Original err message is on stack top now */
return 1;
}
lua_getfield(L, -1, "traceback");
if (!lua_isfunction(L, -1)) {
/* Same here for traceback function */
lua_pop(L, 3);
/* Original err message is on stack top now */
return 1;
}
lua_remove(L, -2); /* remove the 'debug' table */
lua_pushvalue(L, message_index);