tree: allow keys with value zero
This commit is contained in:
parent
cd7669ef66
commit
565ded935d
17
src/tree.c
17
src/tree.c
@ -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;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user