Commit 4cfaf1ec by Michael Matz Committed by Michael Matz

fibheap.c (fibheap_replace_key_data): Make sure we don't early out when forcing the minimum.

        * fibheap.c (fibheap_replace_key_data): Make sure we don't early
        out when forcing the minimum.
        (fibheap_delete_node): Assert that we managed to force the minimum.

From-SVN: r147968
parent 5ff8e3a4
2009-05-29 Michael Matz <matz@suse.de>
* fibheap.c (fibheap_replace_key_data): Make sure we don't early
out when forcing the minimum.
(fibheap_delete_node): Assert that we managed to force the minimum.
2009-05-25 Tristan Gingold <gingold@adacore.com>
* config.h-vms: Rewritten. Define configure macros.
......
......@@ -214,7 +214,10 @@ fibheap_replace_key_data (fibheap_t heap, fibnode_t node,
node->key = key;
y = node->parent;
if (okey == key)
/* Short-circuit if the key is the same, as we then don't have to
do anything. Except if we're trying to force the new node to
be the new minimum for delete. */
if (okey == key && okey != FIBHEAPKEY_MIN)
return odata;
/* These two compares are specifically <= 0 to make sure that in the case
......@@ -256,6 +259,11 @@ fibheap_delete_node (fibheap_t heap, fibnode_t node)
/* To perform delete, we just make it the min key, and extract. */
fibheap_replace_key (heap, node, FIBHEAPKEY_MIN);
if (node != heap->min)
{
fprintf (stderr, "Can't force minimum on fibheap.\n");
abort ();
}
fibheap_extract_min (heap);
return ret;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment