- ITER = OBJECT_CONTAINING((ITER)->MEMBER.prev, ITER, MEMBER))
-#define LIST_FOR_EACH_SAFE(ITER, NEXT, MEMBER, LIST) \
- for (ITER = OBJECT_CONTAINING((LIST)->next, ITER, MEMBER); \
- (NEXT = OBJECT_CONTAINING((ITER)->MEMBER.next, ITER, MEMBER), \
- &(ITER)->MEMBER != (LIST)); \
- ITER = NEXT)
+ ASSIGN_CONTAINER(ITER, (ITER)->MEMBER.prev, MEMBER))
+#define LIST_FOR_EACH_SAFE(ITER, NEXT, MEMBER, LIST) \
+ for (ASSIGN_CONTAINER(ITER, (LIST)->next, MEMBER); \
+ (&(ITER)->MEMBER != (LIST) \
+ ? ASSIGN_CONTAINER(NEXT, (ITER)->MEMBER.next, MEMBER) \
+ : 0); \
+ (ITER) = (NEXT))