summaryrefslogtreecommitdiff
path: root/glib/ghash.c
diff options
context:
space:
mode:
Diffstat (limited to 'glib/ghash.c')
-rw-r--r--glib/ghash.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/glib/ghash.c b/glib/ghash.c
index f65bebcce..cee769153 100644
--- a/glib/ghash.c
+++ b/glib/ghash.c
@@ -338,11 +338,15 @@ g_hash_table_insert_internal (GHashTable *hash_table,
if (*node)
{
- if (hash_table->key_destroy_func)
+ if (keep_new_key)
{
- if (keep_new_key)
+ if (hash_table->key_destroy_func)
hash_table->key_destroy_func ((*node)->key);
- else
+ (*node)->key = key;
+ }
+ else
+ {
+ if (hash_table->key_destroy_func)
hash_table->key_destroy_func (key);
}