Page MenuHomeFreeBSD

D36317.id109737.diff
No OneTemporary

D36317.id109737.diff

Index: sys/sys/tree.h
===================================================================
--- sys/sys/tree.h
+++ sys/sys/tree.h
@@ -727,27 +727,21 @@
attr struct type * \
name##_RB_INSERT(struct name *head, struct type *elm) \
{ \
- struct type *tmp; \
+ struct type **tmp = &RB_ROOT(head); \
struct type *parent = NULL; \
- __typeof(cmp(NULL, NULL)) comp = 0; \
- tmp = RB_ROOT(head); \
- while (tmp) { \
- parent = tmp; \
+ __typeof(cmp(NULL, NULL)) comp; \
+ while (*tmp) { \
+ parent = *tmp; \
comp = (cmp)(elm, parent); \
if (comp < 0) \
- tmp = RB_LEFT(tmp, field); \
+ tmp = &RB_LEFT(parent, field); \
else if (comp > 0) \
- tmp = RB_RIGHT(tmp, field); \
+ tmp = &RB_RIGHT(parent, field); \
else \
- return (tmp); \
+ return (parent); \
} \
RB_SET(elm, parent, field); \
- if (parent == NULL) \
- RB_ROOT(head) = elm; \
- else if (comp < 0) \
- RB_LEFT(parent, field) = elm; \
- else \
- RB_RIGHT(parent, field) = elm; \
+ *tmp = elm; \
name##_RB_INSERT_COLOR(head, elm); \
RB_UPDATE_AUGMENT(elm, field); \
return (NULL); \

File Metadata

Mime Type
text/plain
Expires
Sun, Mar 22, 11:43 AM (14 h, 33 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30120976
Default Alt Text
D36317.id109737.diff (1 KB)

Event Timeline