projects
/
collectd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
lua plugin: Don't destroy interpreter early
[collectd.git]
/
src
/
lua.c
diff --git
a/src/lua.c
b/src/lua.c
index
a0364d7
..
b5d3ce5
100644
(file)
--- 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) /* {{{ */
{
* 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;
}
return -1;
}
+ /* Copy the thread pointer */
+ lua_pushvalue(L, idx);
+
luaL_ref(L, LUA_REGISTRYINDEX);
luaL_ref(L, LUA_REGISTRYINDEX);
- lua_pop(L, 1); /* -1 = 0 */
return 0;
} /* }}} int clua_store_thread */
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);
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);
}
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);
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. */
}
/* Append this script to the global list of scripts. */
@@
-490,6
+484,9
@@
static int lua_script_load(const char *script_path) /* {{{ */
scripts = script;
}
scripts = script;
}
+ if (status != 0)
+ return -1;
+
return 0;
} /* }}} int lua_script_load */
return 0;
} /* }}} int lua_script_load */