-#define HMAP_FOR_EACH_SAFE(NODE, NEXT, MEMBER, HMAP) \
- for (INIT_CONTAINER(NODE, hmap_first(HMAP), MEMBER); \
- (NODE != OBJECT_CONTAINING(NULL, NODE, MEMBER) \
+#define HMAP_FOR_EACH_SAFE(NODE, NEXT, MEMBER, HMAP) \
+ HMAP_FOR_EACH_SAFE_INIT(NODE, NEXT, MEMBER, HMAP, (void) 0)
+#define HMAP_FOR_EACH_SAFE_INIT(NODE, NEXT, MEMBER, HMAP, ...) \
+ for (INIT_CONTAINER(NODE, hmap_first(HMAP), MEMBER), __VA_ARGS__; \
+ ((NODE != OBJECT_CONTAINING(NULL, NODE, MEMBER)) || (NODE = NULL) \