2003-02-16 Alexander Larsson <alexl@redhat.com>

* dbus/dbus-hash.c (_dbus_hash_table_unref):
	Actually free keys and values when destroying hashtable.
This commit is contained in:
Alexander Larsson 2003-02-16 13:19:49 +00:00
parent bf07fc88a3
commit 8925ff6d98
2 changed files with 30 additions and 3 deletions

View file

@ -1,3 +1,8 @@
2003-02-16 Alexander Larsson <alexl@redhat.com>
* dbus/dbus-hash.c (_dbus_hash_table_unref):
Actually free keys and values when destroying hashtable.
2003-02-16 Anders Carlsson <andersca@codefactory.se>
* dbus/dbus-auth.c: (client_try_next_mechanism):

View file

@ -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);
}