X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/3507aa0f86b4306e340c024cf251349861e53a7a..ce6136d5f1a9ce68cfa6c968c257bd6c00c531d7:/src/xbt/swag.c diff --git a/src/xbt/swag.c b/src/xbt/swag.c index 1b1fc12671..308074f4bf 100644 --- a/src/xbt/swag.c +++ b/src/xbt/swag.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2004, 2005, 2006, 2007, 2008, 2009, 2010. The SimGrid Team. +/* Copyright (c) 2004-2014. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -14,7 +14,6 @@ #include "xbt/log.h" #include "xbt/swag.h" - /** Creates a new swag. * \param offset where the hookup is located in the structure * \see xbt_swag_offset @@ -65,6 +64,9 @@ XBT_INLINE void xbt_swag_init(xbt_swag_t swag, size_t offset) */ XBT_INLINE void xbt_swag_insert_at_head(void *obj, xbt_swag_t swag) { + xbt_assert(!xbt_swag_belongs(obj, swag) || swag->tail, + "This object belongs to an empty swag! Did you correctly initialize the object's hookup?"); + if (!swag->head) { xbt_assert(!(swag->tail), "Inconsistent swag."); swag->head = obj; @@ -88,12 +90,11 @@ XBT_INLINE void xbt_swag_insert_at_head(void *obj, xbt_swag_t swag) */ XBT_INLINE void xbt_swag_insert_at_tail(void *obj, xbt_swag_t swag) { - if (xbt_swag_belongs(obj, swag)) { - return; - } + xbt_assert(!xbt_swag_belongs(obj, swag) || swag->tail, + "This object belongs to an empty swag! Did you correctly initialize the object's hookup?"); - if (!swag->tail) { - xbt_assert(!(swag->head), "Inconsistent swag."); + if (!swag->head) { + xbt_assert(!(swag->tail), "Inconsistent swag."); swag->head = obj; swag->tail = obj; swag->count++; @@ -216,8 +217,9 @@ XBT_TEST_UNIT("basic", test_swag_basic, "Basic usage") xbt_swag_insert(obj2, setA); xbt_swag_insert(obj2, setB); - xbt_swag_remove(obj1, setB); - /* xbt_swag_remove(obj2, setB); */ + xbt_test_assert(xbt_swag_remove(NULL, setB) == NULL); + xbt_test_assert(xbt_swag_remove(obj1, setB) == obj1); + /* xbt_test_assert(xbt_swag_remove(obj2, setB) == obj2); */ xbt_test_add("Traverse set A"); xbt_swag_foreach(obj, setA) {