From 1526d634034670d57a21f8361df35c7830e451bc Mon Sep 17 00:00:00 2001 From: Jan Vidar Krey Date: Tue, 5 Aug 2014 13:08:46 +0200 Subject: [PATCH] Simplify list_clear(), allow NULL as free() function pointer. This makes it redundant to create a null_free() or dummy_free() function that does nothing. --- src/core/commands.c | 6 ++---- src/network/dnsresolver.c | 7 +------ src/util/list.c | 5 +++++ src/util/rbtree.c | 4 +--- 4 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/core/commands.c b/src/core/commands.c index d808ffc..ef3e4e5 100644 --- a/src/core/commands.c +++ b/src/core/commands.c @@ -31,8 +31,6 @@ static int send_command_not_found(struct command_base* cbase, struct hub_user* u static int send_command_syntax_error(struct command_base* cbase, struct hub_user* user); static int send_command_missing_arguments(struct command_base* cbase, struct hub_user* user, struct hub_command* cmd); -static void null_free(void* ptr) { } - struct command_base { struct hub_info* hub; @@ -424,7 +422,7 @@ static int command_whoip(struct command_base* cbase, struct hub_user* user, stru ret = uman_get_user_by_addr(cbase->hub->users, users, arg->data.range); if (!ret) { - list_clear(users, &null_free); + list_clear(users, NULL); list_destroy(users); return command_status(cbase, user, cmd, cbuf_create_const("No users found.")); } @@ -439,7 +437,7 @@ static int command_whoip(struct command_base* cbase, struct hub_user* user, stru cbuf_append(buf, "\n"); send_message(cbase, user, buf); - list_clear(users, &null_free); + list_clear(users, NULL); list_destroy(users); return 0; } diff --git a/src/network/dnsresolver.c b/src/network/dnsresolver.c index c470d13..d3ff25e 100644 --- a/src/network/dnsresolver.c +++ b/src/network/dnsresolver.c @@ -109,11 +109,6 @@ void net_dns_destroy() g_dns = NULL; } -static void dummy_free(void* ptr) -{ -} - - void net_dns_process() { struct net_dns_result* result; @@ -148,7 +143,7 @@ void net_dns_process() } }); - list_clear(g_dns->results, &dummy_free); + list_clear(g_dns->results, NULL); uhub_mutex_unlock(&g_dns->mutex); } diff --git a/src/util/list.c b/src/util/list.c index daba290..9e67dc8 100644 --- a/src/util/list.c +++ b/src/util/list.c @@ -40,11 +40,16 @@ void list_destroy(struct linked_list* list) } } +static void dummy_free(void* ptr) +{ +} void list_clear(struct linked_list* list, void (*free_handle)(void* ptr)) { struct node* node = list->first; struct node* tmp = NULL; + if (free_handle == NULL) + free_handle = &dummy_free; while (node) { tmp = node->next; diff --git a/src/util/rbtree.c b/src/util/rbtree.c index 3fb4e99..ae61f2e 100644 --- a/src/util/rbtree.c +++ b/src/util/rbtree.c @@ -318,12 +318,10 @@ static struct rb_node* rb_it_set(struct rb_tree* tree, struct rb_node* n) return n; } -static void null_free(void* ptr) { } - struct rb_node* rb_tree_first(struct rb_tree* tree) { struct rb_node* n = tree->root; - list_clear(tree->iterator.stack, &null_free); + list_clear(tree->iterator.stack, NULL); while (n->link[0]) { push(tree, n);