Add stricter checks for netnames.
[tinc] / src / splay_tree.c
index 166e5ee..bd0f06b 100644 (file)
@@ -1,6 +1,6 @@
 /*
     splay_tree.c -- splay tree and linked list convenience
-    Copyright (C) 2004-2006 Guus Sliepen <guus@tinc-vpn.org>
+    Copyright (C) 2004-2013 Guus Sliepen <guus@tinc-vpn.org>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -238,7 +238,7 @@ static void splay_bottom_up(splay_tree_t *tree, splay_node_t *node) {
 splay_tree_t *splay_alloc_tree(splay_compare_t compare, splay_action_t delete) {
        splay_tree_t *tree;
 
-       tree = xmalloc_and_zero(sizeof(splay_tree_t));
+       tree = xzalloc(sizeof(splay_tree_t));
        tree->compare = compare;
        tree->delete = delete;
 
@@ -250,7 +250,7 @@ void splay_free_tree(splay_tree_t *tree) {
 }
 
 splay_node_t *splay_alloc_node(void) {
-       return xmalloc_and_zero(sizeof(splay_node_t));
+       return xzalloc(sizeof(splay_node_t));
 }
 
 void splay_free_node(splay_tree_t *tree, splay_node_t *node) {
@@ -398,6 +398,8 @@ splay_node_t *splay_insert_node(splay_tree_t *tree, splay_node_t *node) {
        splay_node_t *closest;
        int result;
 
+       node->left = node->right = node->parent = node->next = node->prev = NULL;
+
        if(!tree->root)
                splay_insert_top(tree, node);
        else {
@@ -418,6 +420,7 @@ splay_node_t *splay_insert_node(splay_tree_t *tree, splay_node_t *node) {
 void splay_insert_top(splay_tree_t *tree, splay_node_t *node) {
        node->prev = node->next = node->left = node->right = node->parent = NULL;
        tree->head = tree->tail = tree->root = node;
+       tree->count++;
 }
 
 void splay_insert_before(splay_tree_t *tree, splay_node_t *before, splay_node_t *node) {
@@ -446,6 +449,7 @@ void splay_insert_before(splay_tree_t *tree, splay_node_t *before, splay_node_t
 
        node->parent = NULL;
        tree->root = node;
+       tree->count++;
 }
 
 void splay_insert_after(splay_tree_t *tree, splay_node_t *after, splay_node_t *node) {
@@ -474,6 +478,7 @@ void splay_insert_after(splay_tree_t *tree, splay_node_t *after, splay_node_t *n
 
        node->parent = NULL;
        tree->root = node;
+       tree->count++;
 }
 
 splay_node_t *splay_unlink(splay_tree_t *tree, void *data) {
@@ -511,6 +516,8 @@ void splay_unlink_node(splay_tree_t *tree, splay_node_t *node) {
        } else {
                tree->root = NULL;
        }
+
+       tree->count--;
 }
 
 void splay_delete_node(splay_tree_t *tree, splay_node_t *node) {