Fix potentially undefined behavior
authorJoel Teichroeb <joel@teichroeb.net>
Wed, 24 Nov 2010 02:01:40 +0000 (18:01 -0800)
committerKristian Høgsberg <krh@bitplanet.net>
Wed, 24 Nov 2010 13:50:21 +0000 (08:50 -0500)
Really this time.

http://llvm.org/bugs/show_bug.cgi?id=8670

wayland/wayland-util.h

index 575e657..ebac305 100644 (file)
@@ -94,19 +94,20 @@ int wl_list_empty(struct wl_list *list);
                 ((char *)&(sample)->member - (char *)(sample)))
 
 #define wl_list_for_each(pos, head, member)                            \
-       for (pos = __container_of((head)->next, pos, member);           \
+       for (pos = 0, pos = __container_of((head)->next, pos, member);  \
             &pos->member != (head);                                    \
             pos = __container_of(pos->member.next, pos, member))
 
 #define wl_list_for_each_safe(pos, tmp, head, member)                  \
-       for (pos = __container_of((head)->next, pos, member),           \
+       for (pos = 0, tmp = 0,                                          \
+            pos = __container_of((head)->next, pos, member),           \
             tmp = __container_of((pos)->member.next, tmp, member);     \
             &pos->member != (head);                                    \
             pos = tmp,                                                 \
             tmp = __container_of(pos->member.next, tmp, member))
 
 #define wl_list_for_each_reverse(pos, head, member)                    \
-       for (pos = __container_of((head)->prev, pos, member);           \
+       for (pos = 0, pos = __container_of((head)->prev, pos, member);  \
             &pos->member != (head);                                    \
             pos = __container_of(pos->member.prev, pos, member))