Module Name:    xsrc
Committed By:   martin
Date:           Mon Jul 15 08:26:10 UTC 2019

Modified Files:
        xsrc/external/mit/xf86-video-intel/dist/src [netbsd-8]: intel_list.h

Log Message:
Pull up following revision(s) (requested by mrg in ticket #1290):

        external/mit/xf86-video-intel/dist/src/intel_list.h: revision 1.2

merge changes from xorg-server 1.20 list.h into this older version.
fixes sandy bridge crashing problems for me.


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.2 -r1.1.1.2.2.1 \
    xsrc/external/mit/xf86-video-intel/dist/src/intel_list.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: xsrc/external/mit/xf86-video-intel/dist/src/intel_list.h
diff -u xsrc/external/mit/xf86-video-intel/dist/src/intel_list.h:1.1.1.2 xsrc/external/mit/xf86-video-intel/dist/src/intel_list.h:1.1.1.2.2.1
--- xsrc/external/mit/xf86-video-intel/dist/src/intel_list.h:1.1.1.2	Wed Nov  5 17:56:20 2014
+++ xsrc/external/mit/xf86-video-intel/dist/src/intel_list.h	Mon Jul 15 08:26:10 2019
@@ -305,9 +305,20 @@ list_is_empty(const struct list *head)
 #define list_last_entry(ptr, type, member) \
     list_entry((ptr)->prev, type, member)
 
-#define __container_of(ptr, sample, member)				\
-    (void *)((char *)(ptr)						\
-	     - ((char *)&(sample)->member - (char *)(sample)))
+#ifdef HAVE_TYPEOF
+#define __container_of(ptr, sample, member)			\
+    container_of(ptr, typeof(*sample), member)
+#else
+/* This implementation of __container_of has undefined behavior according
+ * to the C standard, but it works in many cases.  If your compiler doesn't
+ * support typeof() and fails with this implementation, please try a newer
+ * compiler.
+ */
+#define __container_of(ptr, sample, member)                            \
+    (void *)((char *)(ptr)                                             \
+            - ((char *)&(sample)->member - (char *)(sample)))
+#endif
+
 /**
  * Loop through the list given by head and set pos to struct in the list.
  *
@@ -326,12 +337,14 @@ list_is_empty(const struct list *head)
  *
  */
 #define list_for_each_entry(pos, head, member)				\
-    for (pos = __container_of((head)->next, pos, member);		\
+    for (pos = NULL,                                                    \
+         pos = __container_of((head)->next, pos, member);		\
 	 &pos->member != (head);					\
 	 pos = __container_of(pos->member.next, pos, member))
 
 #define list_for_each_entry_reverse(pos, head, member)				\
-    for (pos = __container_of((head)->prev, pos, member);		\
+    for (pos = NULL,                                                    \
+         pos = __container_of((head)->prev, pos, member);		\
 	 &pos->member != (head);					\
 	 pos = __container_of(pos->member.prev, pos, member))
 
@@ -343,7 +356,8 @@ list_is_empty(const struct list *head)
  * See list_for_each_entry for more details.
  */
 #define list_for_each_entry_safe(pos, tmp, head, member)		\
-    for (pos = __container_of((head)->next, pos, member),		\
+    for (pos = NULL,                                                    \
+         pos = __container_of((head)->next, pos, member),		\
 	 tmp = __container_of(pos->member.next, pos, member);		\
 	 &pos->member != (head);					\
 	 pos = tmp, tmp = __container_of(pos->member.next, tmp, member))

Reply via email to