From a436817718f7d4436c3ed1da4022f062dcb81c54 Mon Sep 17 00:00:00 2001 From: Owen Taylor Date: Thu, 21 Nov 2002 21:22:04 +0000 Subject: [PATCH] Patch from Morten Welinder to make ghash.c properly obey Thu Nov 21 16:19:21 2002 Owen Taylor * glib/ghash.c: Patch from Morten Welinder to make ghash.c properly obey DISABLE_MEM_POOLS. (#96600) --- ChangeLog | 5 +++++ ChangeLog.pre-2-10 | 5 +++++ ChangeLog.pre-2-12 | 5 +++++ ChangeLog.pre-2-2 | 5 +++++ ChangeLog.pre-2-4 | 5 +++++ ChangeLog.pre-2-6 | 5 +++++ ChangeLog.pre-2-8 | 5 +++++ glib/ghash.c | 33 +++++++++++++++++++++++++++++---- 8 files changed, 64 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5b8da05..6bc7641 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu Nov 21 16:19:21 2002 Owen Taylor + + * glib/ghash.c: Patch from Morten Welinder to + make ghash.c properly obey DISABLE_MEM_POOLS. (#96600) + Thu Nov 21 14:09:44 2002 Owen Taylor * glib/gmacros.h: Add G_GNUC_DEPRECATED. (Tom Tromey, diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 5b8da05..6bc7641 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,8 @@ +Thu Nov 21 16:19:21 2002 Owen Taylor + + * glib/ghash.c: Patch from Morten Welinder to + make ghash.c properly obey DISABLE_MEM_POOLS. (#96600) + Thu Nov 21 14:09:44 2002 Owen Taylor * glib/gmacros.h: Add G_GNUC_DEPRECATED. (Tom Tromey, diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index 5b8da05..6bc7641 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,8 @@ +Thu Nov 21 16:19:21 2002 Owen Taylor + + * glib/ghash.c: Patch from Morten Welinder to + make ghash.c properly obey DISABLE_MEM_POOLS. (#96600) + Thu Nov 21 14:09:44 2002 Owen Taylor * glib/gmacros.h: Add G_GNUC_DEPRECATED. (Tom Tromey, diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 5b8da05..6bc7641 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,8 @@ +Thu Nov 21 16:19:21 2002 Owen Taylor + + * glib/ghash.c: Patch from Morten Welinder to + make ghash.c properly obey DISABLE_MEM_POOLS. (#96600) + Thu Nov 21 14:09:44 2002 Owen Taylor * glib/gmacros.h: Add G_GNUC_DEPRECATED. (Tom Tromey, diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 5b8da05..6bc7641 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,8 @@ +Thu Nov 21 16:19:21 2002 Owen Taylor + + * glib/ghash.c: Patch from Morten Welinder to + make ghash.c properly obey DISABLE_MEM_POOLS. (#96600) + Thu Nov 21 14:09:44 2002 Owen Taylor * glib/gmacros.h: Add G_GNUC_DEPRECATED. (Tom Tromey, diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 5b8da05..6bc7641 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,8 @@ +Thu Nov 21 16:19:21 2002 Owen Taylor + + * glib/ghash.c: Patch from Morten Welinder to + make ghash.c properly obey DISABLE_MEM_POOLS. (#96600) + Thu Nov 21 14:09:44 2002 Owen Taylor * glib/gmacros.h: Add G_GNUC_DEPRECATED. (Tom Tromey, diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 5b8da05..6bc7641 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,8 @@ +Thu Nov 21 16:19:21 2002 Owen Taylor + + * glib/ghash.c: Patch from Morten Welinder to + make ghash.c properly obey DISABLE_MEM_POOLS. (#96600) + Thu Nov 21 14:09:44 2002 Owen Taylor * glib/gmacros.h: Add G_GNUC_DEPRECATED. (Tom Tromey, diff --git a/glib/ghash.c b/glib/ghash.c index 68cd812..0512061 100644 --- a/glib/ghash.c +++ b/glib/ghash.c @@ -85,10 +85,12 @@ static guint g_hash_table_foreach_remove_or_steal (GHashTable *hash_table, gboolean notify); +#ifndef DISABLE_MEM_POOLS G_LOCK_DEFINE_STATIC (g_hash_global); static GMemChunk *node_mem_chunk = NULL; static GHashNode *node_free_list = NULL; +#endif /** * g_hash_table_new: @@ -612,6 +614,9 @@ g_hash_node_new (gpointer key, { GHashNode *hash_node; +#ifdef DISABLE_MEM_POOLS + hash_node = g_new (GHashNode, 1); +#else G_LOCK (g_hash_global); if (node_free_list) { @@ -628,6 +633,7 @@ g_hash_node_new (gpointer key, hash_node = g_chunk_new (GHashNode, node_mem_chunk); } G_UNLOCK (g_hash_global); +#endif hash_node->key = key; hash_node->value = value; @@ -651,10 +657,14 @@ g_hash_node_destroy (GHashNode *hash_node, hash_node->value = NULL; #endif /* ENABLE_GC_FRIENDLY */ +#ifdef DISABLE_MEM_POOLS + g_free (hash_node); +#else G_LOCK (g_hash_global); hash_node->next = node_free_list; node_free_list = hash_node; G_UNLOCK (g_hash_global); +#endif } static void @@ -662,6 +672,20 @@ g_hash_nodes_destroy (GHashNode *hash_node, GFreeFunc key_destroy_func, GFreeFunc value_destroy_func) { +#ifdef DISABLE_MEM_POOLS + while (hash_node) + { + GHashNode *next = hash_node->next; + + if (key_destroy_func) + key_destroy_func (hash_node->key); + if (value_destroy_func) + value_destroy_func (hash_node->value); + + g_free (hash_node); + hash_node = next; + } +#else if (hash_node) { GHashNode *node = hash_node; @@ -681,10 +705,10 @@ g_hash_nodes_destroy (GHashNode *hash_node, node = node->next; } - if (key_destroy_func) - key_destroy_func (node->key); - if (value_destroy_func) - value_destroy_func (node->value); + if (key_destroy_func) + key_destroy_func (node->key); + if (value_destroy_func) + value_destroy_func (node->value); #ifdef ENABLE_GC_FRIENDLY node->key = NULL; @@ -696,4 +720,5 @@ g_hash_nodes_destroy (GHashNode *hash_node, node_free_list = hash_node; G_UNLOCK (g_hash_global); } +#endif } -- 2.7.4