[PATCH 1/4] sys/tree.h: Simplify loop condition
Sebastian Huber
sebastian.huber at embedded-brains.de
Tue Oct 5 14:16:22 UTC 2021
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; \
}
--
2.26.2
More information about the devel
mailing list