diff options
author | Stig Bjørlykke <stig@bjorlykke.org> | 2011-10-19 15:32:49 +0000 |
---|---|---|
committer | Stig Bjørlykke <stig@bjorlykke.org> | 2011-10-19 15:32:49 +0000 |
commit | 4b930ccb33e32a2dd781be37a7a193376f882588 (patch) | |
tree | 4701f8b593bb7de1f8effe2c2e6c8eeef24a5041 /epan/wslua | |
parent | f1b784b47476cc2b237de9210b137c1a9397cb63 (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.c | 9 |
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; } |