Blame SOURCES/glibc-rh1673465-2.patch

147e83
commit 8311c83f91a3127ccd2fe684e25bc60c5178d23b
147e83
Author: Florian Weimer <fweimer@redhat.com>
147e83
Date:   Thu Feb 7 09:03:02 2019 +0100
147e83
147e83
    array_length: Make usable as a constant expression
147e83
    
147e83
    Do not use a statement expression in array_length, so that
147e83
    array_length can be used at file scope and as a constant expression.
147e83
    Instead, put the _Static_assert into a struct (as a declaration),
147e83
    and nest this in the expression using a sizeof expression.
147e83
147e83
diff --git a/include/array_length.h b/include/array_length.h
147e83
index cb4a8b2a56bca3ad..ccb253c1dc1641cf 100644
147e83
--- a/include/array_length.h
147e83
+++ b/include/array_length.h
147e83
@@ -22,12 +22,12 @@
147e83
 /* array_length (VAR) is the number of elements in the array VAR.  VAR
147e83
    must evaluate to an array, not a pointer.  */
147e83
 #define array_length(var)                                               \
147e83
-  __extension__ ({                                                      \
147e83
-    _Static_assert (!__builtin_types_compatible_p                       \
147e83
-                    (__typeof (var), __typeof (&(var)[0])),             \
147e83
-                    "argument must be an array");                       \
147e83
-    sizeof (var) / sizeof ((var)[0]);                                   \
147e83
-  })
147e83
+  (sizeof (var) / sizeof ((var)[0])                                     \
147e83
+   + 0 * sizeof (struct {                                               \
147e83
+       _Static_assert (!__builtin_types_compatible_p                    \
147e83
+                       (__typeof (var), __typeof (&(var)[0])),          \
147e83
+                       "argument must be an array");                    \
147e83
+   }))
147e83
 
147e83
 /* array_end (VAR) is a pointer one past the end of the array VAR.
147e83
    VAR must evaluate to an array, not a pointer.  */