Patch from Morten Welinder to make ghash.c properly obey

Thu Nov 21 16:19:21 2002  Owen Taylor  <otaylor@redhat.com>

        * glib/ghash.c: Patch from Morten Welinder to
        make ghash.c properly obey DISABLE_MEM_POOLS. (#96600)
This commit is contained in:
Owen Taylor 2002-11-21 21:22:04 +00:00 committed by Owen Taylor
parent eaf8e13856
commit a436817718
8 changed files with 64 additions and 4 deletions

View File

@ -1,3 +1,8 @@
Thu Nov 21 16:19:21 2002 Owen Taylor <otaylor@redhat.com>
* 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 <otaylor@redhat.com>
* glib/gmacros.h: Add G_GNUC_DEPRECATED. (Tom Tromey,

View File

@ -1,3 +1,8 @@
Thu Nov 21 16:19:21 2002 Owen Taylor <otaylor@redhat.com>
* 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 <otaylor@redhat.com>
* glib/gmacros.h: Add G_GNUC_DEPRECATED. (Tom Tromey,

View File

@ -1,3 +1,8 @@
Thu Nov 21 16:19:21 2002 Owen Taylor <otaylor@redhat.com>
* 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 <otaylor@redhat.com>
* glib/gmacros.h: Add G_GNUC_DEPRECATED. (Tom Tromey,

View File

@ -1,3 +1,8 @@
Thu Nov 21 16:19:21 2002 Owen Taylor <otaylor@redhat.com>
* 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 <otaylor@redhat.com>
* glib/gmacros.h: Add G_GNUC_DEPRECATED. (Tom Tromey,

View File

@ -1,3 +1,8 @@
Thu Nov 21 16:19:21 2002 Owen Taylor <otaylor@redhat.com>
* 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 <otaylor@redhat.com>
* glib/gmacros.h: Add G_GNUC_DEPRECATED. (Tom Tromey,

View File

@ -1,3 +1,8 @@
Thu Nov 21 16:19:21 2002 Owen Taylor <otaylor@redhat.com>
* 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 <otaylor@redhat.com>
* glib/gmacros.h: Add G_GNUC_DEPRECATED. (Tom Tromey,

View File

@ -1,3 +1,8 @@
Thu Nov 21 16:19:21 2002 Owen Taylor <otaylor@redhat.com>
* 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 <otaylor@redhat.com>
* glib/gmacros.h: Add G_GNUC_DEPRECATED. (Tom Tromey,

View File

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