the swag while going through it.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@520
48e7efb5-ca39-0410-a469-
dd3cf9ba447f
for((obj)=xbt_swag_getFirst((swag)); \
(obj)!=NULL; \
(obj)=xbt_swag_getNext((obj),(swag)->offset))
+
+#define xbt_swag_foreach_safe(obj,obj_next,swag) \
+ for((obj)=xbt_swag_getFirst((swag)), \
+ ((obj)?(obj_next=xbt_swag_getNext((obj),(swag)->offset)): \
+ (obj_next=NULL)); \
+ (obj)!=NULL; \
+ (obj)=obj_next, \
+ ((obj)?(obj_next=xbt_swag_getNext((obj),(swag)->offset)): \
+ (obj_next=NULL)) )
{
size_t offset = swag->offset;
- if (!obj)
+ if ((!obj) || (!swag))
return NULL;
if(!xbt_swag_belongs(obj, swag)) /* Trying to remove an object that
was not in this swag */