From 1980b54a21fd6bcbe369037fd30b80f63ffedbab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 31 Aug 2004 04:45:02 +0000 Subject: [PATCH] Fixed a stupid bug in list_move_to_list(): it did not work for empty lists. The kernel no longer trashes memory when you delete a port without any messages in its queue (i.e. you can now safely link against libbe.so :)). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8736 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kernel/core/util/list.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/kernel/core/util/list.c b/src/kernel/core/util/list.c index ea4ba15d78..bef4879441 100644 --- a/src/kernel/core/util/list.c +++ b/src/kernel/core/util/list.c @@ -198,10 +198,18 @@ list_remove_tail_item(struct list *list) void list_move_to_list(struct list *sourceList, struct list *targetList) { + if (list_is_empty(sourceList)) { + targetList->link.next = targetList->link.prev = &targetList->link; + return; + } + *targetList = *sourceList; + + // correct link pointers to this list targetList->link.next->prev = &targetList->link; targetList->link.prev->next = &targetList->link; + // empty source list sourceList->link.next = sourceList->link.prev = &sourceList->link; }