/* Splay operation */
static splay_node_t *splay_top_down(splay_tree_t *tree, const void *data, int *result) {
- splay_node_t left = {NULL}, right = {NULL};
+ splay_node_t left = {0}, right = {0};
splay_node_t *leftbottom = &left, *rightbottom = &right, *child, *grandchild;
splay_node_t *root = tree->root;
int c;
node->prev = node->next = node->left = node->right = node->parent = NULL;
tree->head = tree->tail = tree->root = node;
tree->count++;
+ tree->generation++;
}
void splay_insert_before(splay_tree_t *tree, splay_node_t *before, splay_node_t *node) {
node->parent = NULL;
tree->root = node;
tree->count++;
+ tree->generation++;
}
void splay_insert_after(splay_tree_t *tree, splay_node_t *after, splay_node_t *node) {
node->parent = NULL;
tree->root = node;
tree->count++;
+ tree->generation++;
}
splay_node_t *splay_unlink(splay_tree_t *tree, void *data) {
}
tree->count--;
+ tree->generation++;
}
void splay_delete_node(splay_tree_t *tree, splay_node_t *node) {
/* Fast tree cleanup */
-void splay_delete_tree(splay_tree_t *tree) {
+void splay_empty_tree(splay_tree_t *tree) {
for(splay_node_t *node = tree->head, *next; node; node = next) {
next = node->next;
splay_free_node(tree, node);
}
+ tree->head = NULL;
+ tree->tail = NULL;
+ tree->root = NULL;
+ tree->count = 0;
+ tree->generation++;
+}
+
+void splay_delete_tree(splay_tree_t *tree) {
+ splay_empty_tree(tree);
splay_free_tree(tree);
}