diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2017-04-13 18:56:13 -0400 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2017-04-13 18:59:45 -0400 |
commit | dbacee67c415abdd799580efe7949d8012739017 (patch) | |
tree | c3caab8d2ad37eb454ae97c1ba686a436fc46120 /firmware/common | |
parent | 346423c040fe4ac31dae7c1afcb1d853cc80635c (diff) |
Optimize lld_remove() a bit
Just need to check prev and next for NULL to know whether to mess
with the head and/or tail pointers.
Change-Id: I0aee057111e11735b7806e7214af0a6038f0ab53
Diffstat (limited to 'firmware/common')
-rw-r--r-- | firmware/common/linked_list.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/firmware/common/linked_list.c b/firmware/common/linked_list.c index a5b3de3cf7..b8f2dd181c 100644 --- a/firmware/common/linked_list.c +++ b/firmware/common/linked_list.c @@ -198,16 +198,14 @@ void lld_remove(struct lld_head *list, struct lld_node *node) struct lld_node *next = node->next; struct lld_node *prev = node->prev; - if (node == list->head) + if (prev == NULL) list->head = next; - - if (node == list->tail) - list->tail = prev; - - if (prev != NULL) + else prev->next = next; - if (next != NULL) + if (next == NULL) + list->tail = prev; + else next->prev = prev; } |