[PATCH] Fix potentially undefined behavior

Joel Teichroeb joel at teichroeb.net
Tue Nov 23 18:01:40 PST 2010


Really this time.
---
 wayland/wayland-util.h |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/wayland/wayland-util.h b/wayland/wayland-util.h
index 575e657..ebac305 100644
--- a/wayland/wayland-util.h
+++ b/wayland/wayland-util.h
@@ -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))

-- 
1.7.3.2


More information about the wayland-devel mailing list