diff options
author | Michael Mann <mmann78@netscape.net> | 2016-12-22 15:12:27 -0500 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2017-01-07 00:44:10 +0000 |
commit | 6a6d7ea34f43515dfe3f52aa96b943c272c925a7 (patch) | |
tree | dbf89a2226861fa855cc04d80607c56f7268e51b /epan/wslua | |
parent | 29a7fce2720288c86e474f68880a0e61e517027b (diff) | |
download | wireshark-6a6d7ea34f43515dfe3f52aa96b943c272c925a7.tar.gz |
Convert range API to always use wmem memory.
This is mostly to address memory leaks in range preferences (the biggest
user of range functionality) on shutdown.
Now range preferences must use epan scoped memory when referencing
internal preference structures to keep consistency.
Change-Id: Idc644f59b5b42fa1d46891542b53ff13ea754157
Reviewed-on: https://code.wireshark.org/review/19387
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/wslua')
-rw-r--r-- | epan/wslua/wslua_dissector.c | 18 | ||||
-rw-r--r-- | epan/wslua/wslua_pref.c | 2 |
2 files changed, 10 insertions, 10 deletions
diff --git a/epan/wslua/wslua_dissector.c b/epan/wslua/wslua_dissector.c index d6aac98add..b365c7e6d6 100644 --- a/epan/wslua/wslua_dissector.c +++ b/epan/wslua/wslua_dissector.c @@ -354,14 +354,14 @@ WSLUA_METHOD DissectorTable_add (lua_State *L) { /* Not a number, try as range */ const gchar* pattern = luaL_checkstring(L,WSLUA_ARG_DissectorTable_add_PATTERN); range_t *range = NULL; - if (range_convert_str(&range, pattern, G_MAXUINT32) == CVT_NO_ERROR) { + if (range_convert_str(NULL, &range, pattern, G_MAXUINT32) == CVT_NO_ERROR) { dissector_add_uint_range(dt->name, range, handle); } else { - g_free (range); + wmem_free (NULL, range); WSLUA_ARG_ERROR(DissectorTable_add,PATTERN,"invalid integer or range"); return 0; } - g_free (range); + wmem_free (NULL, range); } } else { luaL_error(L,"Strange type %d for a DissectorTable",type); @@ -417,15 +417,15 @@ WSLUA_METHOD DissectorTable_set (lua_State *L) { /* Not a number, try as range */ const gchar* pattern = luaL_checkstring(L,WSLUA_ARG_DissectorTable_set_PATTERN); range_t *range = NULL; - if (range_convert_str(&range, pattern, G_MAXUINT32) == CVT_NO_ERROR) { + if (range_convert_str(NULL, &range, pattern, G_MAXUINT32) == CVT_NO_ERROR) { dissector_delete_all(dt->name, handle); dissector_add_uint_range(dt->name, range, handle); } else { - g_free (range); + wmem_free (NULL, range); WSLUA_ARG_ERROR(DissectorTable_set,PATTERN,"invalid integer or range"); return 0; } - g_free (range); + wmem_free (NULL, range); } } else { luaL_error(L,"Strange type %d for a DissectorTable",type); @@ -472,14 +472,14 @@ WSLUA_METHOD DissectorTable_remove (lua_State *L) { /* Not a number, try as range */ const gchar* pattern = luaL_checkstring(L,WSLUA_ARG_DissectorTable_remove_PATTERN); range_t *range = NULL; - if (range_convert_str(&range, pattern, G_MAXUINT32) == CVT_NO_ERROR) + if (range_convert_str(NULL, &range, pattern, G_MAXUINT32) == CVT_NO_ERROR) dissector_delete_uint_range(dt->name, range, handle); else { - g_free (range); + wmem_free (NULL, range); WSLUA_ARG_ERROR(DissectorTable_remove,PATTERN,"invalid integer or range"); return 0; } - g_free (range); + wmem_free (NULL, range); } } diff --git a/epan/wslua/wslua_pref.c b/epan/wslua/wslua_pref.c index 74b28f4797..51f195fff8 100644 --- a/epan/wslua/wslua_pref.c +++ b/epan/wslua/wslua_pref.c @@ -235,7 +235,7 @@ static range_t* get_range(lua_State *L, int idx_r, int idx_m) static range_t *ret = NULL; const gchar *pattern = luaL_checkstring(L, idx_r); - switch (range_convert_str(&ret, pattern, wslua_togint32(L, idx_m))) { + switch (range_convert_str(wmem_epan_scope(), &ret, pattern, wslua_togint32(L, idx_m))) { case CVT_NO_ERROR: break; case CVT_SYNTAX_ERROR: |