From 098cf0f98dbb310c6a7ef94f0bdaf683f276767b Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 5 Oct 2021 15:31:22 +0200 Subject: [PATCH] sys/tree.h: Simplify loop condition We have #define RB_ISRED(elm, field) \ ((elm) != NULL && RB_COLOR(elm, field) == RB_RED) So, the RB_ISRED() contains an implicit check for NULL. In RB_GENERATE_REMOVE_COLOR() the "elm" pointer cannot be NULL in the while condition. Use RB_COLOR(elm) == RB_BLACK instead. --- newlib/libc/include/sys/tree.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/newlib/libc/include/sys/tree.h b/newlib/libc/include/sys/tree.h index 2af77a499..15831c7dd 100644 --- a/newlib/libc/include/sys/tree.h +++ b/newlib/libc/include/sys/tree.h @@ -540,7 +540,7 @@ name##_RB_REMOVE_COLOR(struct name *head, struct type *parent) \ elm = RB_ROOT(head); \ break; \ } \ - } while (!RB_ISRED(elm, field) && parent != NULL); \ + } while (RB_COLOR(elm, field) == RB_BLACK && parent != NULL); \ RB_COLOR(elm, field) = RB_BLACK; \ }