Page MenuHomeFreeBSD

D25089.diff
No OneTemporary

D25089.diff

Index: head/sys/sys/tree.h
===================================================================
--- head/sys/sys/tree.h
+++ head/sys/sys/tree.h
@@ -493,26 +493,23 @@
RB_ROTATE_LEFT(head, parent, tmp, field);\
tmp = RB_RIGHT(parent, field); \
} \
- if (!RB_ISRED(RB_LEFT(tmp, field), field) && \
- !RB_ISRED(RB_RIGHT(tmp, field), field)) { \
+ if (RB_ISRED(RB_LEFT(tmp, field), field)) { \
+ struct type *oleft; \
+ oleft = RB_LEFT(tmp, field); \
+ RB_COLOR(oleft, field) = RB_BLACK; \
RB_COLOR(tmp, field) = RB_RED; \
+ RB_ROTATE_RIGHT(head, tmp, oleft, field); \
+ tmp = RB_RIGHT(parent, field); \
+ } else if (!RB_ISRED(RB_RIGHT(tmp, field), field)) { \
+ RB_COLOR(tmp, field) = RB_RED; \
elm = parent; \
parent = RB_PARENT(elm, field); \
continue; \
} \
- if (!RB_ISRED(RB_RIGHT(tmp, field), field)) { \
- struct type *oleft; \
- if ((oleft = RB_LEFT(tmp, field)) \
- != NULL) \
- RB_COLOR(oleft, field) = RB_BLACK; \
- RB_COLOR(tmp, field) = RB_RED; \
- RB_ROTATE_RIGHT(head, tmp, oleft, field); \
- tmp = RB_RIGHT(parent, field); \
- } \
+ if (RB_ISRED(RB_RIGHT(tmp, field), field)) \
+ RB_COLOR(RB_RIGHT(tmp, field), field) = RB_BLACK; \
RB_COLOR(tmp, field) = RB_COLOR(parent, field); \
RB_COLOR(parent, field) = RB_BLACK; \
- if (RB_RIGHT(tmp, field)) \
- RB_COLOR(RB_RIGHT(tmp, field), field) = RB_BLACK; \
RB_ROTATE_LEFT(head, parent, tmp, field); \
elm = RB_ROOT(head); \
break; \
@@ -523,26 +520,23 @@
RB_ROTATE_RIGHT(head, parent, tmp, field);\
tmp = RB_LEFT(parent, field); \
} \
- if (!RB_ISRED(RB_LEFT(tmp, field), field) && \
- !RB_ISRED(RB_RIGHT(tmp, field), field)) { \
+ if (RB_ISRED(RB_RIGHT(tmp, field), field)) { \
+ struct type *oright; \
+ oright = RB_RIGHT(tmp, field); \
+ RB_COLOR(oright, field) = RB_BLACK; \
RB_COLOR(tmp, field) = RB_RED; \
+ RB_ROTATE_LEFT(head, tmp, oright, field); \
+ tmp = RB_LEFT(parent, field); \
+ } else if (!RB_ISRED(RB_LEFT(tmp, field), field)) { \
+ RB_COLOR(tmp, field) = RB_RED; \
elm = parent; \
parent = RB_PARENT(elm, field); \
continue; \
} \
- if (!RB_ISRED(RB_LEFT(tmp, field), field)) { \
- struct type *oright; \
- if ((oright = RB_RIGHT(tmp, field)) \
- != NULL) \
- RB_COLOR(oright, field) = RB_BLACK; \
- RB_COLOR(tmp, field) = RB_RED; \
- RB_ROTATE_LEFT(head, tmp, oright, field); \
- tmp = RB_LEFT(parent, field); \
- } \
+ if (RB_ISRED(RB_LEFT(tmp, field), field)) \
+ RB_COLOR(RB_LEFT(tmp, field), field) = RB_BLACK; \
RB_COLOR(tmp, field) = RB_COLOR(parent, field); \
RB_COLOR(parent, field) = RB_BLACK; \
- if (RB_LEFT(tmp, field)) \
- RB_COLOR(RB_LEFT(tmp, field), field) = RB_BLACK; \
RB_ROTATE_RIGHT(head, parent, tmp, field); \
elm = RB_ROOT(head); \
break; \

File Metadata

Mime Type
text/plain
Expires
Sat, Jan 31, 10:46 PM (10 h, 33 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28207731
Default Alt Text
D25089.diff (2 KB)

Event Timeline