heap bugfix
authorNathan S. Evans <evans@in.tum.de>
Thu, 3 Dec 2009 01:44:18 +0000 (01:44 +0000)
committerNathan S. Evans <evans@in.tum.de>
Thu, 3 Dec 2009 01:44:18 +0000 (01:44 +0000)
src/util/container_heap.c

index cde67825736f9370b619eaa1b5d18aebc8886ff2..9c6005bebc8010750f37014594f1beb1f843dd7f 100644 (file)
@@ -326,6 +326,8 @@ GNUNET_CONTAINER_heap_remove_node (struct GNUNET_CONTAINER_Heap *root,
   ret = del_node->element;
   last = getPos (root, root->size);
 
+  root->size--;
+
   old_cost = del_node->cost;
   del_node->element = last->element;
   del_node->cost = last->cost;
@@ -339,8 +341,14 @@ GNUNET_CONTAINER_heap_remove_node (struct GNUNET_CONTAINER_Heap *root,
     {
       root->traversal_pos = root->root;
     }
+
+  if (last == del_node)
+  {
+    GNUNET_free (last);
+    return ret;
+  }
   GNUNET_free (last);
-  root->size--;
+
 
   if (del_node->cost > old_cost)
     {