tree: allow keys with value zero

This commit is contained in:
Bert Belder 2017-09-14 15:38:35 +02:00
parent cd7669ef66
commit 565ded935d

View File

@ -26,18 +26,11 @@ void tree_node_init(tree_node_t* node) {
int tree_add(tree_t* tree, tree_node_t* node, uintptr_t key) {
tree_node_t* existing_node;
if (key == 0)
return_error(-1, ERROR_INVALID_PARAMETER);
if (node->key != 0)
return_error(-1, ERROR_ALREADY_EXISTS);
node->key = key;
existing_node = RB_INSERT(tree, tree, node);
if (existing_node != NULL) {
node->key = 0;
if (existing_node != NULL)
return_error(-1, ERROR_ALREADY_EXISTS);
}
return 0;
}
@ -45,9 +38,6 @@ int tree_add(tree_t* tree, tree_node_t* node, uintptr_t key) {
int tree_del(tree_t* tree, tree_node_t* node) {
tree_node_t* removed_node;
if (node->key == 0)
return_error(-1, ERROR_NOT_FOUND);
removed_node = RB_REMOVE(tree, tree, node);
if (removed_node == NULL)
@ -55,8 +45,6 @@ int tree_del(tree_t* tree, tree_node_t* node) {
else
assert(removed_node == node);
node->key = 0;
return 0;
}
@ -64,9 +52,6 @@ tree_node_t* tree_find(tree_t* tree, uintptr_t key) {
tree_node_t* node;
tree_node_t lookup;
if (key == 0)
return_error(NULL, ERROR_INVALID_PARAMETER);
memset(&lookup, 0, sizeof lookup);
lookup.key = key;