- the generic issue in the SAFE version, where we still access the cursor after it has been potentially fixedNo, in the SAFE macros we don't, that's the whole point of having them.
reading from wine/list.h
#define LIST_FOR_EACH_SAFE(cursor, cursor2, list) \
for ((cursor) = (list)->next, (cursor2) = (cursor)->next; \
(cursor) != (list); \
(cursor) = (cursor2), (cursor2) = (cursor)->next)
well, to me, the "(cursor2) = (cursor)->next" accesses cursor *AFTER* it
has been potentially freed
A+
