aboutsummaryrefslogtreecommitdiffstats
path: root/epan/wslua
diff options
context:
space:
mode:
authorStig Bjørlykke <stig@bjorlykke.org>2011-10-19 15:32:49 +0000
committerStig Bjørlykke <stig@bjorlykke.org>2011-10-19 15:32:49 +0000
commit4b930ccb33e32a2dd781be37a7a193376f882588 (patch)
tree4701f8b593bb7de1f8effe2c2e6c8eeef24a5041 /epan/wslua
parentf1b784b47476cc2b237de9210b137c1a9397cb63 (diff)
Duplicate Lua strings we put into the private_table.
svn path=/trunk/; revision=39468
Diffstat (limited to 'epan/wslua')
-rw-r--r--epan/wslua/wslua_pinfo.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/epan/wslua/wslua_pinfo.c b/epan/wslua/wslua_pinfo.c
index 4b197ae60b..5ad72b391d 100644
--- a/epan/wslua/wslua_pinfo.c
+++ b/epan/wslua/wslua_pinfo.c
@@ -828,11 +828,12 @@ WSLUA_CLASS_DEFINE(PrivateTable,NOP,NOP);
WSLUA_METAMETHOD PrivateTable__tostring(lua_State* L) {
PrivateTable priv = checkPrivateTable(L,1);
- GString *key_string = g_string_new ("");
+ GString *key_string;
GList *keys, *key;
if (!priv) return 0;
+ key_string = g_string_new ("");
keys = g_hash_table_get_keys (priv->table);
key = g_list_first (keys);
while (key) {
@@ -899,7 +900,11 @@ static int PrivateTable__newindex(lua_State* L) {
return 0;
}
- g_hash_table_replace (priv->table, (gpointer) name, (gpointer) string);
+ if (string) {
+ g_hash_table_replace (priv->table, (gpointer) ep_strdup(name), (gpointer) ep_strdup(string));
+ } else {
+ g_hash_table_remove (priv->table, (gpointer) name);
+ }
return 1;
}