]> granicus.if.org Git - php/commitdiff
Workaround VA macro expansion difference with VC++
authorAnatol Belski <ab@php.net>
Thu, 15 Mar 2018 20:17:40 +0000 (21:17 +0100)
committerAnatol Belski <ab@php.net>
Thu, 15 Mar 2018 20:17:40 +0000 (21:17 +0100)
Zend/zend_ast.h

index 900c1b656216d65519f34c74dd3af76bfd8a9441..c5e4a1747417cb17b7ac4f455ae4d1bf07a9ea18 100644 (file)
@@ -204,12 +204,27 @@ ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_zval_from_long(zend_long lval)
 ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_constant(zend_string *name, zend_ast_attr attr);
 
 #if ZEND_AST_SPEC
-# define ZEND_AST_SPEC_CALL(name, ...) \
+# ifdef ZEND_WIN32
+#  define ZEND_AST_EXPAND_VA(a) a
+# endif
+
+# ifdef ZEND_WIN32
+#  define ZEND_AST_SPEC_CALL(name, ...) \
+       ZEND_AST_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _4, _3, _2, _1, _0)(__VA_ARGS__))
+# else
+#  define ZEND_AST_SPEC_CALL(name, ...) \
        ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _4, _3, _2, _1, _0)(__VA_ARGS__)
+# endif
 # define ZEND_AST_SPEC_CALL_(name, _, _4, _3, _2, _1, suffix, ...) \
        name ## suffix
-# define ZEND_AST_SPEC_CALL_EX(name, ...) \
+
+# ifdef ZEND_WIN32
+#  define ZEND_AST_SPEC_CALL_EX(name, ...) \
+       ZEND_AST_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _4, _3, _2, _1, _0)(__VA_ARGS__))
+# else
+#  define ZEND_AST_SPEC_CALL_EX(name, ...) \
        ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _4, _3, _2, _1, _0)(__VA_ARGS__)
+# endif
 # define ZEND_AST_SPEC_CALL_EX_(name, _, _5, _4, _3, _2, _1, suffix, ...) \
        name ## suffix