Added module headers, made gtree.c thread-safe.
diff --git a/glib/gprimes.c b/glib/gprimes.c
index 3d45c1e..a431b95 100644
--- a/glib/gprimes.c
+++ b/glib/gprimes.c
@@ -1,5 +1,10 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+/*
+ * gprimes.c - Prime number table and function(s).
+ *
+ * MT-Level: Safe
+ *
+ * GLIB - Library of useful routines for C programming
+ * Copyright 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
diff --git a/glib/gtree.c b/glib/gtree.c
index 0d7f78c..795f5e3 100644
--- a/glib/gtree.c
+++ b/glib/gtree.c
@@ -1,5 +1,11 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+/*
+ * gtree.c - balanced binary tree container
+ *
+ * MT-Level: Safe
+ *
+ * GLIB - Library of useful routines for C programming
+ * Copyright 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+ * Copyright 1998 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -80,6 +86,7 @@
static GMemChunk *node_mem_chunk = NULL;
static GSList *node_free_list = NULL;
+G_THREAD_SPROTECT(node_free_list)
GTree*
@@ -238,6 +245,8 @@
GTreeNode *node;
GSList *tmp_list;
+ g_thread_lock(node_free_list);
+
if (node_free_list)
{
tmp_list = node_free_list;
@@ -259,6 +268,8 @@
node = g_chunk_new (GTreeNode, node_mem_chunk);
}
+ g_thread_unlock(node_free_list);
+
node->balance = 0;
node->left = NULL;
node->right = NULL;
@@ -273,7 +284,10 @@
{
if (node)
{
+ g_thread_lock(node_free_list);
node_free_list = g_slist_prepend (node_free_list, node);
+ g_thread_unlock(node_free_list);
+
g_tree_node_destroy (node->right);
g_tree_node_destroy (node->left);
}
@@ -379,7 +393,9 @@
node = g_tree_node_restore_right_balance (new_root, old_balance);
}
+ g_thread_lock(node_free_list);
node_free_list = g_slist_prepend (node_free_list, garbage);
+ g_thread_unlock(node_free_list);
}
else if (cmp < 0)
{
diff --git a/gprimes.c b/gprimes.c
index 3d45c1e..a431b95 100644
--- a/gprimes.c
+++ b/gprimes.c
@@ -1,5 +1,10 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+/*
+ * gprimes.c - Prime number table and function(s).
+ *
+ * MT-Level: Safe
+ *
+ * GLIB - Library of useful routines for C programming
+ * Copyright 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
diff --git a/gtree.c b/gtree.c
index 0d7f78c..795f5e3 100644
--- a/gtree.c
+++ b/gtree.c
@@ -1,5 +1,11 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+/*
+ * gtree.c - balanced binary tree container
+ *
+ * MT-Level: Safe
+ *
+ * GLIB - Library of useful routines for C programming
+ * Copyright 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+ * Copyright 1998 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -80,6 +86,7 @@
static GMemChunk *node_mem_chunk = NULL;
static GSList *node_free_list = NULL;
+G_THREAD_SPROTECT(node_free_list)
GTree*
@@ -238,6 +245,8 @@
GTreeNode *node;
GSList *tmp_list;
+ g_thread_lock(node_free_list);
+
if (node_free_list)
{
tmp_list = node_free_list;
@@ -259,6 +268,8 @@
node = g_chunk_new (GTreeNode, node_mem_chunk);
}
+ g_thread_unlock(node_free_list);
+
node->balance = 0;
node->left = NULL;
node->right = NULL;
@@ -273,7 +284,10 @@
{
if (node)
{
+ g_thread_lock(node_free_list);
node_free_list = g_slist_prepend (node_free_list, node);
+ g_thread_unlock(node_free_list);
+
g_tree_node_destroy (node->right);
g_tree_node_destroy (node->left);
}
@@ -379,7 +393,9 @@
node = g_tree_node_restore_right_balance (new_root, old_balance);
}
+ g_thread_lock(node_free_list);
node_free_list = g_slist_prepend (node_free_list, garbage);
+ g_thread_unlock(node_free_list);
}
else if (cmp < 0)
{