New function list_moved().
authorBen Pfaff <blp@nicira.com>
Fri, 30 Jan 2009 00:47:03 +0000 (16:47 -0800)
committerBen Pfaff <blp@nicira.com>
Mon, 2 Mar 2009 20:51:59 +0000 (12:51 -0800)
lib/list.c
lib/list.h

index 8eaf9fe94d3d5dac8204eab8ca7c66c3eac9702a..89d15f1190ff46206eae95b81bdccd1cfd9df16c 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2008 The Board of Trustees of The Leland Stanford
+/* Copyright (c) 2008, 2009 The Board of Trustees of The Leland Stanford
  * Junior University
  * 
  * We are making the OpenFlow specification and associated documentation
@@ -98,6 +98,14 @@ list_replace(struct list *element, const struct list *position)
     element->prev->next = element;
 }
 
+/* Adjusts pointers around 'list' to compensate for 'list' having been moved
+ * around in memory (e.g. as a consequence of realloc()). */
+void
+list_moved(struct list *list)
+{
+    list->prev->next = list->next->prev = list;
+}
+
 /* Removes 'elem' from its list and returns the element that followed it.
    Undefined behavior if 'elem' is not in a list. */
 struct list *
index 602c549bb7ab29c7797ffc19a5fb42a8f1c19ddd..7de8548cf02bb0b168d8b9c7eb74cae8f3d7f8b1 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2008 The Board of Trustees of The Leland Stanford
+/* Copyright (c) 2008, 2009 The Board of Trustees of The Leland Stanford
  * Junior University
  * 
  * We are making the OpenFlow specification and associated documentation
@@ -56,6 +56,7 @@ void list_splice(struct list *before, struct list *first, struct list *last);
 void list_push_front(struct list *, struct list *);
 void list_push_back(struct list *, struct list *);
 void list_replace(struct list *, const struct list *);
+void list_moved(struct list *);
 
 /* List removal. */
 struct list *list_remove(struct list *);