From 8925ff6d9870ccaab0feeb4f9af6e1f075d313ef Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Sun, 16 Feb 2003 13:19:49 +0000 Subject: [PATCH] 2003-02-16 Alexander Larsson * dbus/dbus-hash.c (_dbus_hash_table_unref): Actually free keys and values when destroying hashtable. --- ChangeLog | 5 +++++ dbus/dbus-hash.c | 28 +++++++++++++++++++++++++--- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index ec0bb11..29dcd4e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-02-16 Alexander Larsson + + * dbus/dbus-hash.c (_dbus_hash_table_unref): + Actually free keys and values when destroying hashtable. + 2003-02-16 Anders Carlsson * dbus/dbus-auth.c: (client_try_next_mechanism): diff --git a/dbus/dbus-hash.c b/dbus/dbus-hash.c index 8bac61a..d7791d2 100644 --- a/dbus/dbus-hash.c +++ b/dbus/dbus-hash.c @@ -236,6 +236,8 @@ static void remove_entry (DBusHashTable *table, DBusHashEntry *entry); static void free_entry (DBusHashTable *table, DBusHashEntry *entry); +static void free_entry_data (DBusHashTable *table, + DBusHashEntry *entry); /** @} */ @@ -371,6 +373,20 @@ _dbus_hash_table_unref (DBusHashTable *table) } } #else + DBusHashEntry *entry; + int i; + + /* Free the entries in the table. */ + for (i = 0; i < table->n_buckets; i++) + { + entry = table->buckets[i]; + while (entry != NULL) + { + free_entry_data (table, entry); + + entry = entry->next; + } + } /* We can do this very quickly with memory pools ;-) */ _dbus_mem_pool_free (table->entry_pool); #endif @@ -394,14 +410,20 @@ alloc_entry (DBusHashTable *table) } static void -free_entry (DBusHashTable *table, - DBusHashEntry *entry) +free_entry_data (DBusHashTable *table, + DBusHashEntry *entry) { if (table->free_key_function) (* table->free_key_function) (entry->key); if (table->free_value_function) (* table->free_value_function) (entry->value); - +} + +static void +free_entry (DBusHashTable *table, + DBusHashEntry *entry) +{ + free_entry_data (table, entry); _dbus_mem_pool_dealloc (table->entry_pool, entry); } -- 2.7.4