From: Anatol Belski Date: Thu, 15 Mar 2018 20:17:40 +0000 (+0100) Subject: Workaround VA macro expansion difference with VC++ X-Git-Tag: php-7.3.0alpha1~180 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e659fcd89e4a842046ac994f380d9be9c4fc978d;p=php Workaround VA macro expansion difference with VC++ --- diff --git a/Zend/zend_ast.h b/Zend/zend_ast.h index 900c1b6562..c5e4a17474 100644 --- a/Zend/zend_ast.h +++ b/Zend/zend_ast.h @@ -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