- the generic issue in the SAFE version, where we still access the cursor after it has been potentially fixed

No, 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+


Reply via email to