diff --git a/src/listener.c b/src/listener.c index 0080a804..64ffed2f 100644 --- a/src/listener.c +++ b/src/listener.c @@ -51,27 +51,25 @@ listener_remove(notify notify_cb) struct listener *listener; struct listener *prev; - listener = listener_list; prev = NULL; - - while (listener) + for (listener = listener_list; listener; listener = listener->next) { if (listener->notify_cb == notify_cb) - { - if (prev) - prev->next = listener->next; - else - listener_list = NULL; - - free(listener); - return 0; - } + break; prev = listener; - listener = listener->next; } - return -1; + if (!listener) + return 0; + + if (prev) + prev->next = listener->next; + else + listener_list = NULL; + + free(listener); + return 0; } int