summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/list.c46
1 files changed, 23 insertions, 23 deletions
diff --git a/src/list.c b/src/list.c
index 6110e14..e4467a1 100644
--- a/src/list.c
+++ b/src/list.c
@@ -244,35 +244,35 @@ dlink_move_node(dlink_node *m, dlink_list *list_del, dlink_list *list_add)
dlink_node *
dlinkFindDelete(dlink_list *list, void *data)
{
- dlink_node *m;
+ dlink_node *m = NULL;
DLINK_FOREACH(m, list->head)
{
- if (m->data == data)
+ if (m->data != data)
+ continue;
+
+ if (m->next)
+ m->next->prev = m->prev;
+ else
+ {
+ assert(list->tail == m);
+ list->tail = m->prev;
+ }
+
+ if (m->prev)
+ m->prev->next = m->next;
+ else
{
- if (m->next)
- m->next->prev = m->prev;
- else
- {
- assert(list->tail == m);
- list->tail = m->prev;
- }
- if (m->prev)
- m->prev->next = m->next;
- else
- {
- assert(list->head == m);
- list->head = m->next;
- }
- /* Set this to NULL does matter */
- m->next = m->prev = NULL;
- list->length--;
-
- return m;
+ assert(list->head == m);
+ list->head = m->next;
}
+
+ /* Set this to NULL does matter */
+ m->next = m->prev = NULL;
+ list->length--;
+
+ return m;
}
return NULL;
}
-
-