From: Christophe ThiƩry Date: Thu, 3 Nov 2011 09:18:51 +0000 (+0100) Subject: Make xbt_swag_insert_at_head/tail uniform and check an error X-Git-Tag: exp_20120216~527 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/9047a9e5bf34489806e03b10240f4278d4706838?hp=30f1c8c5e4b8a7b6e593c7bb885ffad766ae6f5d Make xbt_swag_insert_at_head/tail uniform and check an error --- diff --git a/src/xbt/swag.c b/src/xbt/swag.c index 1b1fc12671..70a8f084e0 100644 --- a/src/xbt/swag.c +++ b/src/xbt/swag.c @@ -65,6 +65,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,17 +91,16 @@ 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++; } - else if (obj != swag->tail && !xbt_swag_getNext(obj, swag->offset)) { + else if (obj != swag->head && !xbt_swag_getPrev(obj, swag->offset)) { xbt_swag_getPrev(obj, swag->offset) = swag->tail; xbt_swag_getNext(swag->tail, swag->offset) = obj; swag->tail = obj;