Commit e5e5a8a9d20 for php

commit e5e5a8a9d20df13d7d4d464af11c8422b6797cbe
Author: Lazizbek Ergashev <lazerg2@gmail.com>
Date:   Thu Oct 29 14:26:41 2026 +0500

    Fix GH-25023: ZEND_CONTAINER_OF() fails to compile with -std=c11 (#25027)

diff --git a/NEWS b/NEWS
index bf0ae375324..6899e0b14e8 100644
--- a/NEWS
+++ b/NEWS
@@ -7,6 +7,8 @@ PHP                                                                        NEWS
     for grouping. (Klaas Skelte van der Werf)
   . Fixed unmapping of an unrelated range when the aligned chunk mmap fails
     (Marti2203).
+  . Fixed bug GH-25023 (ZEND_CONTAINER_OF() fails to compile with -std=c11).
+    (lazerg)

 - CLI:
   . Fixed bug GH-24697 (PHP_HTTP_PARSER_STRICT build option doesn't work).
diff --git a/Zend/zend_portability.h b/Zend/zend_portability.h
index ccad24682fd..3549fe6f544 100644
--- a/Zend/zend_portability.h
+++ b/Zend/zend_portability.h
@@ -387,6 +387,12 @@ char *alloca();
 #define ZEND_ELEMENT_COUNT(m)
 #endif

+#if __STDC_VERSION__ >= 202311L
+# define ZEND_TYPEOF(x) typeof(x)
+#elif ZEND_GCC_VERSION
+# define ZEND_TYPEOF(x) __typeof__(x)
+#endif
+
 #if __cplusplus
 extern "C++" {
 # include <cstddef>
@@ -401,13 +407,12 @@ extern "C++" {

 # define ZEND_CONTAINER_OF(ptr, Type, member) zend_container_of<Type, decltype(Type::member)>(ptr, offsetof(Type, member))
 }
-#elif __STDC_VERSION__ >= 202311L || ZEND_GCC_VERSION
-/* typeof is C23 or a GCC extension */
+#elif defined(ZEND_TYPEOF)
 # define ZEND_CONTAINER_OF(ptr, Type, member) \
 	_Generic( \
 		(ptr), \
-		const typeof(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
-		typeof(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
+		const ZEND_TYPEOF(((Type*)0)->member) *: ((const Type*)((char*)(ptr) - offsetof(Type, member))), \
+		ZEND_TYPEOF(((Type*)0)->member) *: ((Type*)((char*)(ptr) - offsetof(Type, member))) \
 	)
 #else
 /* Define a variant that does not keep const-ness for older compilers. Mismatches