Commit c3229c33 authored by ioddly's avatar ioddly
Browse files

Try to report source of bad Lua API calls

parent 5d0f408d
...@@ -152,9 +152,20 @@ char *redisProtocolToLuaType_MultiBulk(lua_State *lua, char *reply) { ...@@ -152,9 +152,20 @@ char *redisProtocolToLuaType_MultiBulk(lua_State *lua, char *reply) {
} }
void luaPushError(lua_State *lua, char *error) { void luaPushError(lua_State *lua, char *error) {
lua_Debug dbg;
lua_newtable(lua); lua_newtable(lua);
lua_pushstring(lua,"err"); lua_pushstring(lua,"err");
/* Attempt to figure out where this function was called, if possible */
if(lua_getstack(lua, 1, &dbg) && lua_getinfo(lua, "nSl", &dbg)) {
sds msg = sdscatprintf(sdsempty(), "%s: %d: %s",
dbg.source, dbg.currentline, error);
lua_pushstring(lua, msg);
sdsfree(msg);
} else {
lua_pushstring(lua, error); lua_pushstring(lua, error);
}
lua_settable(lua,-3); lua_settable(lua,-3);
} }
...@@ -866,9 +877,10 @@ void evalGenericCommand(redisClient *c, int evalsha) { ...@@ -866,9 +877,10 @@ void evalGenericCommand(redisClient *c, int evalsha) {
delhook = 1; delhook = 1;
} }
/* At this point whatever this script was never seen before or if it was /* At this point whether this script was never seen before or if it was
* already defined, we can call it. We have zero arguments and expect * already defined, we can call it. We have zero arguments and expect
* a single return value. */ * a single return value. */
err = lua_pcall(lua,0,1,0); err = lua_pcall(lua,0,1,0);
/* Perform some cleanup that we need to do both on error and success. */ /* Perform some cleanup that we need to do both on error and success. */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment