From 9b28ebf9971ec1670f61a627365dde538dda5a81 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Fri, 4 Aug 2023 13:25:56 -0400 Subject: [PATCH] DoublyLinkedQueue: Rework Remove() function. Equivalent to the changes done to DoublyLinkedList (in 904e9f5512305dbc0eed9146e8a0b2d597269b71.) --- .../private/kernel/util/DoublyLinkedQueue.h | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/headers/private/kernel/util/DoublyLinkedQueue.h b/headers/private/kernel/util/DoublyLinkedQueue.h index ec0909d51a..4e85a91dc1 100644 --- a/headers/private/kernel/util/DoublyLinkedQueue.h +++ b/headers/private/kernel/util/DoublyLinkedQueue.h @@ -226,18 +226,24 @@ DOUBLY_LINKED_LIST_TEMPLATE_LIST void DOUBLY_LINKED_QUEUE_CLASS_NAME::Remove(Element *element) { - if (element) { - Link *elLink = sGetLink(element); - if (elLink->previous) - sGetLink(elLink->previous)->next = elLink->next; - else - fFirst = elLink->next; - if (elLink->next) - sGetLink(elLink->next)->previous = elLink->previous; + if (element == NULL) + return; - elLink->previous = NULL; - elLink->next = NULL; - } +#if DEBUG_DOUBLY_LINKED_LIST + ASSERT_PRINT(fFirst != NULL, + "queue: %p, element: %p\n", this, element); +#endif + + Link *elLink = sGetLink(element); + if (element == fFirst) + fFirst = elLink->next; + else + sGetLink(elLink->previous)->next = elLink->next; + + if (elLink->next) + sGetLink(elLink->next)->previous = elLink->previous; + + elLink->next = elLink->previous = NULL; } // Swap