list_add_link_to_tail() didn't work correctly.

Applied fixes by notion: removed two redundant if-statements, replaced
(link *)list with &list->link.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2527 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler 2003-01-21 23:43:13 +00:00
parent d376996084
commit 822ea83244
1 changed files with 7 additions and 10 deletions

View File

@ -18,7 +18,7 @@
void void
list_init_etc(struct list *list, int32 offset) list_init_etc(struct list *list, int32 offset)
{ {
list->link.next = list->link.prev = (list_link *)list; list->link.next = list->link.prev = &list->link;
list->offset = offset; list->offset = offset;
} }
@ -39,11 +39,9 @@ list_add_link_to_head(struct list *list, void *_link)
list_link *link = (list_link *)_link; list_link *link = (list_link *)_link;
link->next = list->link.next; link->next = list->link.next;
link->prev = (list_link *)list; link->prev = &list->link;
link->next->prev = link;
if (list->link.prev == (list_link *)list) list->link.next->prev = link;
list->link.prev = link;
list->link.next = link; list->link.next = link;
} }
@ -56,11 +54,10 @@ list_add_link_to_tail(struct list *list, void *_link)
{ {
list_link *link = (list_link *)_link; list_link *link = (list_link *)_link;
link->next = (list_link *)list; link->next = &list->link;
link->prev = list->link.prev; link->prev = list->link.prev;
if (list->link.next == (list_link *)list) list->link.prev->next = link;
list->link.next = link;
list->link.prev = link; list->link.prev = link;
} }
@ -82,7 +79,7 @@ list_remove_link(void *_link)
static inline list_link * static inline list_link *
get_next_link(struct list *list, list_link *link) get_next_link(struct list *list, list_link *link)
{ {
if (link->next == (list_link *)list) if (link->next == &list->link)
return NULL; return NULL;
return link->next; return link->next;
@ -92,7 +89,7 @@ get_next_link(struct list *list, list_link *link)
static inline list_link * static inline list_link *
get_prev_link(struct list *list, list_link *link) get_prev_link(struct list *list, list_link *link)
{ {
if (link->prev == (list_link *)list) if (link->prev == &list->link)
return NULL; return NULL;
return link->prev; return link->prev;