Improve list_remove().
authorBen Pfaff <blp@cs.stanford.edu>
Fri, 5 Nov 2004 23:22:12 +0000 (23:22 +0000)
committerBen Pfaff <blp@cs.stanford.edu>
Fri, 5 Nov 2004 23:22:12 +0000 (23:22 +0000)
src/lib/kernel/list.c

index 1227d6b6b5679f5c2708af027e0a69241684d613..173557680184707306e5c2816a564a550ef79f8a 100644 (file)
@@ -216,15 +216,15 @@ list_push_back (struct list *list, list_elem *elem)
   list_insert (list_end (list), elem);
 }
 
-/* Removes ELEM from its list.  Undefined behavior if ELEM is not
-   in a list. */
+/* Removes ELEM from its list and returns the element that
+   followed it.  Undefined behavior if ELEM is not in a list.  */
 list_elem *
 list_remove (list_elem *elem)
 {
   ASSERT (is_interior (elem));
   elem->prev->next = elem->next;
   elem->next->prev = elem->prev;
-  return elem;
+  return elem->next;
 }
 
 /* Removes the front element from LIST and returns it.