projects
/
tinc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Avoid warnings from -fsanitize=integer in the hash functions.
[tinc]
/
src
/
splay_tree.c
diff --git
a/src/splay_tree.c
b/src/splay_tree.c
index
ee85519
..
50d701c
100644
(file)
--- a/
src/splay_tree.c
+++ b/
src/splay_tree.c
@@
-25,7
+25,7
@@
/* Splay operation */
static splay_node_t *splay_top_down(splay_tree_t *tree, const void *data, int *result) {
/* 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;
splay_node_t *leftbottom = &left, *rightbottom = &right, *child, *grandchild;
splay_node_t *root = tree->root;
int c;
@@
-604,12
+604,21
@@
void splay_delete(splay_tree_t *tree, void *data) {
/* Fast tree cleanup */
/* 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);
}
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);
}
splay_free_tree(tree);
}