Don't crash if removing a nonexistent value.
[platform/upstream/glib.git] / gcache.c
index c9ed61f..dc58f07 100644 (file)
--- a/gcache.c
+++ b/gcache.c
  * Boston, MA 02111-1307, USA.
  */
 
+/*
+ * Modified by the GLib Team and others 1997-1999.  See the AUTHORS
+ * file for a list of people on the GLib Team.  See the ChangeLog
+ * files for a list of changes.  These files are distributed with
+ * GLib at ftp://ftp.gtk.org/pub/gtk/. 
+ */
+
 /* 
  * MT safe
  */
@@ -61,7 +68,7 @@ static void        g_cache_node_destroy (GCacheNode *node);
 
 
 static GMemChunk *node_mem_chunk = NULL;
-G_LOCK_DECLARE_STATIC (node_mem_chunk);
+G_LOCK_DEFINE_STATIC (node_mem_chunk);
 
 GCache*
 g_cache_new (GCacheNewFunc      value_new_func,
@@ -150,6 +157,9 @@ g_cache_remove (GCache   *cache,
   key = g_hash_table_lookup (rcache->value_table, value);
   node = g_hash_table_lookup (rcache->key_table, key);
 
+  if (node == NULL)
+    return;
+
   node->ref_count -= 1;
   if (node->ref_count == 0)
     {