tree: don't set error on failure, this is the caller's responsibility
This commit is contained in:
parent
562bf271df
commit
7b43e9c9f0
13
src/port.c
13
src/port.c
@ -321,15 +321,22 @@ int ep_port_ctl(ep_port_t* port_info,
|
||||
int ep_port_add_socket(ep_port_t* port_info,
|
||||
ep_sock_t* sock_info,
|
||||
SOCKET socket) {
|
||||
return tree_add(&port_info->sock_tree, &sock_info->tree_node, socket);
|
||||
if (tree_add(&port_info->sock_tree, &sock_info->tree_node, socket) < 0)
|
||||
return_error(-1, ERROR_ALREADY_EXISTS);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ep_port_del_socket(ep_port_t* port_info, ep_sock_t* sock_info) {
|
||||
return tree_del(&port_info->sock_tree, &sock_info->tree_node);
|
||||
if (tree_del(&port_info->sock_tree, &sock_info->tree_node) < 0)
|
||||
return_error(-1, ERROR_NOT_FOUND);
|
||||
return 0;
|
||||
}
|
||||
|
||||
ep_sock_t* ep_port_find_socket(ep_port_t* port_info, SOCKET socket) {
|
||||
return ep_sock_find_in_tree(&port_info->sock_tree, socket);
|
||||
ep_sock_t* sock_info = ep_sock_find_in_tree(&port_info->sock_tree, socket);
|
||||
if (sock_info == NULL)
|
||||
return_error(NULL, ERROR_NOT_FOUND);
|
||||
return sock_info;
|
||||
}
|
||||
|
||||
static poll_group_allocator_t* _ep_port_get_poll_group_allocator(
|
||||
|
||||
11
src/tree.c
11
src/tree.c
@ -30,7 +30,7 @@ int tree_add(tree_t* tree, tree_node_t* node, uintptr_t key) {
|
||||
existing_node = RB_INSERT(tree, tree, node);
|
||||
|
||||
if (existing_node != NULL)
|
||||
return_error(-1, ERROR_ALREADY_EXISTS);
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -41,7 +41,7 @@ int tree_del(tree_t* tree, tree_node_t* node) {
|
||||
removed_node = RB_REMOVE(tree, tree, node);
|
||||
|
||||
if (removed_node == NULL)
|
||||
return_error(-1, ERROR_NOT_FOUND);
|
||||
return -1;
|
||||
else
|
||||
assert(removed_node == node);
|
||||
|
||||
@ -49,17 +49,12 @@ int tree_del(tree_t* tree, tree_node_t* node) {
|
||||
}
|
||||
|
||||
tree_node_t* tree_find(tree_t* tree, uintptr_t key) {
|
||||
tree_node_t* node;
|
||||
tree_node_t lookup;
|
||||
|
||||
memset(&lookup, 0, sizeof lookup);
|
||||
lookup.key = key;
|
||||
|
||||
node = RB_FIND(tree, tree, &lookup);
|
||||
if (node == NULL)
|
||||
return_error(NULL, ERROR_NOT_FOUND);
|
||||
|
||||
return node;
|
||||
return RB_FIND(tree, tree, &lookup);
|
||||
}
|
||||
|
||||
tree_node_t* tree_root(tree_t* tree) {
|
||||
|
||||
@ -4,6 +4,11 @@
|
||||
#include "internal.h"
|
||||
#include "rb.h"
|
||||
|
||||
/* NB: the tree functions do not set errno or LastError when they fail. Each of
|
||||
* the API functions has at most one failure mode. It is up to the caller to
|
||||
* set an appropriate error code when necessary.
|
||||
*/
|
||||
|
||||
typedef RB_HEAD(tree, tree_node) tree_t;
|
||||
|
||||
typedef struct tree_node {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user