diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-02-21 13:26:15 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-02-21 13:26:32 +0000 |
commit | a0569dfc529599362a30eec96272c20b14680e8b (patch) | |
tree | a28d469a9b6e59f8f1e4654163e45de806544829 /src/lua | |
parent | f4f98bdec17f34d30e1d54ad98c858fc42e3355c (diff) | |
download | rspamd-a0569dfc529599362a30eec96272c20b14680e8b.tar.gz rspamd-a0569dfc529599362a30eec96272c20b14680e8b.zip |
[Minor] Fix calling of Lua symbols
Diffstat (limited to 'src/lua')
-rw-r--r-- | src/lua/lua_config.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/lua/lua_config.c b/src/lua/lua_config.c index b37f7fe0b..c4cdb1be5 100644 --- a/src/lua/lua_config.c +++ b/src/lua/lua_config.c @@ -879,7 +879,7 @@ lua_metric_symbol_callback (struct rspamd_task *task, gpointer ud) { struct lua_callback_data *cd = ud; struct rspamd_task **ptask; - gint level = lua_gettop (cd->L), nresults, err_idx; + gint level = lua_gettop (cd->L), nresults, err_idx, ret; lua_State *L = cd->L; GString *tb; struct rspamd_symbol_result *s; @@ -900,11 +900,14 @@ lua_metric_symbol_callback (struct rspamd_task *task, gpointer ud) rspamd_lua_setclass (L, "rspamd{task}", -1); *ptask = task; - if (lua_pcall (L, 1, LUA_MULTRET, err_idx) != 0) { + if ((ret = lua_pcall (L, 1, LUA_MULTRET, err_idx)) != 0) { tb = lua_touserdata (L, -1); - msg_err_task ("call to (%s) failed: %v", cd->symbol, tb); - g_string_free (tb, TRUE); - lua_pop (L, 1); + msg_err_task ("call to (%s) failed (%d): %v", cd->symbol, ret, tb); + + if (tb) { + g_string_free (tb, TRUE); + lua_pop (L, 1); + } } else { nresults = lua_gettop (L) - level; |