X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Flua.c;h=b5d3ce54c902b26b2e5ab99debe921605effe341;hb=1fe028d387704d46ef777a3f47168baa2262ef78;hp=a0364d7e53bc557e09b3387beaee5f14564d0538;hpb=49c50724983f3ad377b20ef56778df091b65587f;p=collectd.git diff --git a/src/lua.c b/src/lua.c index a0364d7e..b5d3ce54 100644 --- a/src/lua.c +++ b/src/lua.c @@ -79,18 +79,14 @@ static int clua_load_callback(lua_State *L, int callback_ref) /* {{{ */ * garbage collector. */ static int clua_store_thread(lua_State *L, int idx) /* {{{ */ { - if (idx < 0) - idx += lua_gettop(L) + 1; - - /* Copy the thread pointer */ - lua_pushvalue(L, idx); /* +1 = 3 */ - if (!lua_isthread(L, -1)) { - lua_pop(L, 3); /* -3 = 0 */ + if (!lua_isthread(L, idx)) { return -1; } + /* Copy the thread pointer */ + lua_pushvalue(L, idx); + luaL_ref(L, LUA_REGISTRYINDEX); - lua_pop(L, 1); /* -1 = 0 */ return 0; } /* }}} int clua_store_thread */ @@ -265,6 +261,7 @@ static int lua_cb_dispatch_values(lua_State *L) /* {{{ */ static void lua_cb_free(void *data) { clua_callback_data_t *cb = data; free(cb->lua_function_name); + pthread_mutex_destroy(&cb->lock); free(cb); } @@ -474,9 +471,6 @@ static int lua_script_load(const char *script_path) /* {{{ */ else ERROR("Lua plugin: Executing script \"%s\" failed:\n%s", script_path, errmsg); - - lua_script_free(script); - return -1; } /* Append this script to the global list of scripts. */ @@ -490,6 +484,9 @@ static int lua_script_load(const char *script_path) /* {{{ */ scripts = script; } + if (status != 0) + return -1; + return 0; } /* }}} int lua_script_load */