lua: Use glib allocators

This commit is contained in:
mniip 2016-04-04 05:53:29 +03:00 committed by Patrick Griffis
parent bc9a59d264
commit 5998696c2a
1 changed files with 22 additions and 34 deletions

View File

@ -59,7 +59,7 @@ static hexchat_plugin *ph;
#define luaL_setfuncs(L, r, n) luaL_register(L, NULL, r)
#endif
#define ARRAY_RESIZE(A, N) ((A) = realloc((A), (N) * sizeof(*(A))))
#define ARRAY_RESIZE(A, N) ((A) = g_realloc((A), (N) * sizeof(*(A))))
#define ARRAY_GROW(A, N) ((N)++, ARRAY_RESIZE(A, N))
#define ARRAY_SHRINK(A, N) ((N)--, ARRAY_RESIZE(A, N))
@ -197,21 +197,21 @@ static int api_hexchat_send_modes(lua_State *L)
if(strlen(mode) != 2)
return luaL_argerror(L, 2, "expected sign followed by a mode letter");
modes = luaL_optinteger(L, 3, 0);
targets = malloc(n * sizeof(char const *));
targets = g_new(char const *, n);
for(i = 0; i < n; i++)
{
lua_rawgeti(L, 1, i + 1);
if(lua_type(L, -1) != LUA_TSTRING)
{
free(targets);
g_free(targets);
return luaL_argerror(L, 1, "expected an array of strings");
}
targets[i] = lua_tostring(L, -1);
lua_pop(L, 1);
}
hexchat_send_modes(ph, targets, n, modes, mode[0], mode[1]);
free(targets);
g_free(targets);
return 0;
}
@ -255,7 +255,7 @@ static void free_hook(hook_info *hook)
luaL_unref(L, LUA_REGISTRYINDEX, hook->ref);
if(hook->hook)
hexchat_unhook(ph, hook->hook);
free(hook);
g_free(hook);
}
static int unregister_hook(hook_info *hook)
@ -333,7 +333,7 @@ static int api_hexchat_hook_command(lua_State *L)
ref = luaL_ref(L, LUA_REGISTRYINDEX);
help = luaL_optstring(L, 3, NULL);
pri = luaL_optinteger(L, 4, HEXCHAT_PRI_NORM);
info = malloc(sizeof(hook_info));
info = g_new(hook_info, 1);
info->state = L;
info->ref = ref;
info->hook = hexchat_hook_command(ph, command, pri, api_command_closure, help, info);
@ -389,7 +389,7 @@ static int api_hexchat_hook_print(lua_State *L)
lua_pushvalue(L, 2);
ref = luaL_ref(L, LUA_REGISTRYINDEX);
pri = luaL_optinteger(L, 3, HEXCHAT_PRI_NORM);
info = malloc(sizeof(hook_info));
info = g_new(hook_info, 1);
info->state = L;
info->ref = ref;
info->hook = hexchat_hook_print(ph, event, pri, api_print_closure, info);
@ -456,7 +456,7 @@ static int api_hexchat_hook_print_attrs(lua_State *L)
lua_pushvalue(L, 2);
ref = luaL_ref(L, LUA_REGISTRYINDEX);
pri = luaL_optinteger(L, 3, HEXCHAT_PRI_NORM);
info = malloc(sizeof(hook_info));
info = g_new(hook_info, 1);
info->state = L;
info->ref = ref;
info->hook = hexchat_hook_print_attrs(ph, event, pri, api_print_attrs_closure, info);
@ -514,7 +514,7 @@ static int api_hexchat_hook_server(lua_State *L)
lua_pushvalue(L, 2);
ref = luaL_ref(L, LUA_REGISTRYINDEX);
pri = luaL_optinteger(L, 3, HEXCHAT_PRI_NORM);
info = malloc(sizeof(hook_info));
info = g_new(hook_info, 1);
info->state = L;
info->ref = ref;
info->hook = hexchat_hook_server(ph, command, pri, api_server_closure, info);
@ -578,7 +578,7 @@ static int api_hexchat_hook_server_attrs(lua_State *L)
lua_pushvalue(L, 2);
ref = luaL_ref(L, LUA_REGISTRYINDEX);
pri = luaL_optinteger(L, 3, HEXCHAT_PRI_NORM);
info = malloc(sizeof(hook_info));
info = g_new(hook_info, 1);
info->state = L;
info->ref = ref;
info->hook = hexchat_hook_server_attrs(ph, command, pri, api_server_attrs_closure, info);
@ -622,7 +622,7 @@ static int api_hexchat_hook_timer(lua_State *L)
lua_pushvalue(L, 2);
ref = luaL_ref(L, LUA_REGISTRYINDEX);
info = malloc(sizeof(hook_info));
info = g_new(hook_info, 1);
info->state = L;
info->ref = ref;
info->hook = hexchat_hook_timer(ph, timeout, api_timer_closure, info);
@ -642,7 +642,7 @@ static int api_hexchat_hook_unload(lua_State *L)
lua_pushvalue(L, 1);
ref = luaL_ref(L, LUA_REGISTRYINDEX);
info = malloc(sizeof(hook_info));
info = g_new(hook_info, 1);
info->state = L;
info->ref = ref;
info->hook = NULL;
@ -1293,14 +1293,7 @@ static script_info *create_script(char const *file)
int base;
char *filename_fs;
lua_State *L;
script_info *info = malloc(sizeof(script_info));
info->name = info->description = info->version = NULL;
info->handle = NULL;
info->status = 0;
info->hooks = NULL;
info->num_hooks = 0;
info->unload_hooks = NULL;
info->num_unload_hooks = 0;
script_info *info = g_new0(script_info, 1);
info->filename = g_strdup(expand_path(file));
L = luaL_newstate();
info->state = L;
@ -1308,7 +1301,7 @@ static script_info *create_script(char const *file)
{
hexchat_print(ph, "\00304Could not allocate memory for the script");
g_free(info->filename);
free(info);
g_free(info);
return NULL;
}
prepare_state(L, info);
@ -1320,7 +1313,7 @@ static script_info *create_script(char const *file)
hexchat_printf(ph, "Invalid filename: %s", info->filename);
lua_close(L);
g_free(info->filename);
free(info);
g_free(info);
return NULL;
}
if(luaL_loadfile(L, filename_fs))
@ -1329,7 +1322,7 @@ static script_info *create_script(char const *file)
hexchat_printf(ph, "Lua syntax error: %s", luaL_optstring(L, -1, ""));
lua_close(L);
g_free(info->filename);
free(info);
g_free(info);
return NULL;
}
g_free(filename_fs);
@ -1352,7 +1345,7 @@ static script_info *create_script(char const *file)
hexchat_plugingui_remove(ph, info->handle);
}
g_free(info->filename);
free(info);
g_free(info);
return 0;
}
lua_pop(L, 1);
@ -1366,7 +1359,7 @@ static script_info *create_script(char const *file)
free_hook(info->unload_hooks[i]);
lua_close(L);
g_free(info->filename);
free(info);
g_free(info);
return 0;
}
return info;
@ -1401,7 +1394,7 @@ static void destroy_script(script_info *info)
g_free(info->description);
g_free(info->version);
hexchat_plugingui_remove(ph, info->handle);
free(info);
g_free(info);
}
static void load_script(char const *file)
@ -1479,23 +1472,18 @@ script_info *interp = NULL;
static void create_interpreter(void)
{
lua_State *L;
interp = malloc(sizeof(script_info));
interp = g_new0(script_info, 1);
interp->name = "lua interpreter";
interp->description = "";
interp->version = "";
interp->handle = ph;
interp->status = 0;
interp->hooks = NULL;
interp->num_hooks = 0;
interp->unload_hooks = NULL;
interp->num_unload_hooks = 0;
interp->filename = "";
L = luaL_newstate();
interp->state = L;
if(!L)
{
hexchat_print(ph, "\00304Could not allocate memory for the interpreter");
free(interp);
g_free(interp);
interp = NULL;
return;
}
@ -1528,7 +1516,7 @@ static void destroy_interpreter(void)
free_hook(hook);
}
lua_close(L);
free(interp);
g_free(interp);
interp = NULL;
}
}