X-Git-Url: https://git.octo.it/?p=collectd.git;a=blobdiff_plain;f=src%2Flua.c;h=a9b981cad74c5c7fc1791c713fa23fb3f365215c;hp=d91676c9fd765aa8ebf0c044a30431348906f00a;hb=fd69638b5ace185e6ff0f16248c24abbb0586f80;hpb=a4ea42bfa5de12eafde74080376024c165432050 diff --git a/src/lua.c b/src/lua.c index d91676c9..a9b981ca 100644 --- a/src/lua.c +++ b/src/lua.c @@ -48,7 +48,7 @@ typedef struct lua_script_s { typedef struct { lua_State *lua_state; - const char *lua_function_name; + char *lua_function_name; pthread_mutex_t lock; int callback_id; } clua_callback_data_t; @@ -263,6 +263,13 @@ static int lua_cb_dispatch_values(lua_State *L) /* {{{ */ return 0; } /* }}} lua_cb_dispatch_values */ +static void lua_cb_free(void *data) +{ + clua_callback_data_t *cb = data; + free(cb->lua_function_name); + free(cb); +} + static int lua_cb_register_read(lua_State *L) /* {{{ */ { int nargs = lua_gettop(L); @@ -300,6 +307,7 @@ static int lua_cb_register_read(lua_State *L) /* {{{ */ /* interval = */ 0, &(user_data_t){ .data = cb, + .free_func = lua_cb_free, }); if (status != 0) @@ -342,6 +350,7 @@ static int lua_cb_register_write(lua_State *L) /* {{{ */ /* callback = */ clua_write, &(user_data_t){ .data = cb, + .free_func = lua_cb_free, }); if (status != 0)