Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Show also the sub-scheduling rounds.
[simgrid.git] / src / xbt / swag.c
index 4b211c1..bc2361a 100644 (file)
@@ -1,6 +1,5 @@
-/*     $Id$     */
-
-/* Copyright (c) 2004 Arnaud Legrand. All rights reserved.                  */
+/* Copyright (c) 2004, 2005, 2006, 2007, 2008, 2009, 2010. The SimGrid Team.
+ * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
@@ -79,8 +78,7 @@ XBT_INLINE void xbt_swag_insert(void *obj, xbt_swag_t swag)
   }
 
   xbt_swag_getPrev(obj, swag->offset) = swag->tail;
-  xbt_swag_getNext(xbt_swag_getPrev(obj, swag->offset), swag->offset) = obj;
-
+  xbt_swag_getNext(swag->tail, swag->offset) = obj;
   swag->tail = obj;
 }
 
@@ -106,8 +104,7 @@ XBT_INLINE void xbt_swag_insert_at_head(void *obj, xbt_swag_t swag)
   }
 
   xbt_swag_getNext(obj, swag->offset) = swag->head;
-  xbt_swag_getPrev(xbt_swag_getNext(obj, swag->offset), swag->offset) = obj;
-
+  xbt_swag_getPrev(swag->head, swag->offset) = obj;
   swag->head = obj;
 }
 
@@ -133,8 +130,7 @@ XBT_INLINE void xbt_swag_insert_at_tail(void *obj, xbt_swag_t swag)
   }
 
   xbt_swag_getPrev(obj, swag->offset) = swag->tail;
-  xbt_swag_getNext(xbt_swag_getPrev(obj, swag->offset), swag->offset) = obj;
-
+  xbt_swag_getNext(swag->tail, swag->offset) = obj;
   swag->tail = obj;
 }
 
@@ -170,8 +166,10 @@ XBT_INLINE void *xbt_swag_remove(void *obj, xbt_swag_t swag)
     xbt_swag_getNext(swag->tail, offset) = NULL;
     xbt_swag_getPrev(obj, offset) = NULL;
   } else {                      /* It's in the middle */
-    xbt_swag_getNext(xbt_swag_getPrev(obj, offset), offset) = xbt_swag_getNext(obj, offset);
-    xbt_swag_getPrev(xbt_swag_getNext(obj, offset), offset) = xbt_swag_getPrev(obj, offset);
+    xbt_swag_getNext(xbt_swag_getPrev(obj, offset), offset) =
+        xbt_swag_getNext(obj, offset);
+    xbt_swag_getPrev(xbt_swag_getNext(obj, offset), offset) =
+        xbt_swag_getPrev(obj, offset);
     xbt_swag_getPrev(obj, offset) = xbt_swag_getNext(obj, offset) = NULL;
   }
   (swag->count)--;
@@ -274,6 +272,9 @@ XBT_TEST_UNIT("basic", test_swag_basic, "Basic usage")
 
   xbt_swag_free(setA);
   xbt_swag_free(setB);
+
+  xbt_free(obj1);
+  xbt_free(obj2);
 }
 
-#endif /* SIMGRID_TEST */
+#endif                          /* SIMGRID_TEST */