test(heap): some more tests to expose flaws

This commit is contained in:
Jef Roosens 2023-01-25 20:49:18 +01:00
parent 63100c5b99
commit dc557f57ab
Signed by: Jef Roosens
GPG key ID: B75D4F293C7052DB
4 changed files with 73 additions and 37 deletions

View file

@ -56,14 +56,6 @@ vieter_heap_error vieter_heap_pop(void **out, vieter_heap *heap) {
return vieter_heap_empty;
}
if (heap->tree->order == 0 && heap->tree->ptr.next_tree == NULL) {
*out = heap->tree->data;
vieter_heap_tree_free(heap->tree);
heap->tree = NULL;
return vieter_heap_ok;
}
heap->tree = vieter_heap_tree_pop(out, heap->tree);
return vieter_heap_ok;

View file

@ -167,6 +167,9 @@ vieter_heap_node *vieter_heap_tree_pop(void **out, vieter_heap_node *tree) {
return original_root;
}
// Each child has a pointer to its sibling with the next largest order. If we
// want to convert this list of children into their own tree, these pointers
// have to be reversed.
previous_tree = tree_to_pop->largest_order;
vieter_heap_node_free(tree_to_pop);