]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Fix calling of Lua symbols
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 21 Feb 2017 13:26:15 +0000 (13:26 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 21 Feb 2017 13:26:32 +0000 (13:26 +0000)
src/lua/lua_config.c

index b37f7fe0b5a248d023ecd2e7f207ffb717f3feb1..c4cdb1be52796ff15f32c1084f04ab83cdd2f11a 100644 (file)
@@ -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;