Mercurial > flash_v2
changeset 1320:cfe81e17269a
Fix some bugs in red-black tree implementation
| author | gthomas |
|---|---|
| date | Sat, 18 Oct 2003 14:04:02 +0000 |
| parents | 94e373b3fc8d |
| children | 83e860bfbcaa |
| files | packages/compat/linux/current/ChangeLog packages/compat/linux/current/include/linux/rbtree.h packages/compat/linux/current/src/rbtree.c |
| diffstat | 3 files changed, 12 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/compat/linux/current/ChangeLog +++ b/packages/compat/linux/current/ChangeLog @@ -1,3 +1,13 @@ +2003-10-18 Gary Thomas <gary@mlbassoc.com> + + * src/rbtree.c (rb_erase): Fix bug in red-black tree which caused + node corruption - merge from external sources, found by Scott Wilkerson. + +2003-10-18 Savin Zlobec <savin@elatec.si> + + * include/linux/rbtree.h: + Fixed 'pointer of type `void *' used in subtraction' compiler warrning. + 2003-07-27 Andrew Lunn <andrew.lunn@ascom.ch> * include/linux/init.h:
--- a/packages/compat/linux/current/include/linux/rbtree.h +++ b/packages/compat/linux/current/include/linux/rbtree.h @@ -15,7 +15,7 @@ struct rb_root { #define NULL ((void *)0) #define RB_ROOT ((struct rb_root){NULL}) #define rb_entry(p, container, field) \ - ((container *) ((void *)p - ((void *)&(((container *)0)->field)))) + ((container *) ((char *)p - ((char *)&(((container *)0)->field)))) #define RB_BLACK 0 #define RB_RED 1
--- a/packages/compat/linux/current/src/rbtree.c +++ b/packages/compat/linux/current/src/rbtree.c @@ -294,7 +294,7 @@ void rb_erase(struct rb_node *elm, struc RB_HEAD(head) = child; if (RB_PARENT(elm) == old) parent = elm; - (elm) = (old); + *(elm) = *(old); if (RB_PARENT(old)) { if (RB_LEFT(RB_PARENT(old)) == old) RB_LEFT(RB_PARENT(old)) = elm;
