]> granicus.if.org Git - php/commitdiff
Move va_copy compatibility code into zend_portability.h
authorNikita Popov <nikita.ppv@gmail.com>
Sun, 25 Jun 2017 15:00:26 +0000 (17:00 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Sun, 25 Jun 2017 15:00:26 +0000 (17:00 +0200)
Previously this was defined in zend.c and php.h and also handled
in another way in soap.c.

Zend/zend.c
Zend/zend_portability.h
ext/soap/soap.c
main/php.h

index adcef0bec5a655a6022538816696c5a82c2aa26c..a6677099a55bb6b33c27d66c788e0518120bf940 100644 (file)
@@ -1230,22 +1230,9 @@ static ZEND_COLD void zend_error_va_list(int type, const char *format, va_list a
                        break;
                default:
                        /* Handle the error in user space */
-/* va_copy() is __va_copy() in old gcc versions.
- * According to the autoconf manual, using
- * memcpy(&dst, &src, sizeof(va_list))
- * gives maximum portability. */
-#ifndef va_copy
-# ifdef __va_copy
-#  define va_copy(dest, src)   __va_copy((dest), (src))
-# else
-#  define va_copy(dest, src)   memcpy(&(dest), &(src), sizeof(va_list))
-# endif
-#endif
                        va_copy(usr_copy, args);
                        ZVAL_STR(&params[1], zend_vstrpprintf(0, format, usr_copy));
-#ifdef va_copy
                        va_end(usr_copy);
-#endif
 
                        ZVAL_LONG(&params[0], type);
 
index b2b956a82cc3d47b69d97238c6c4466b1a7f9d58..eefbd7b8218e873a7f936537683b7f3463e640dd 100644 (file)
@@ -498,6 +498,18 @@ static zend_always_inline double _zend_get_nan(void) /* {{{ */
 #define ZEND_VALID_SOCKET(sock) ((sock) >= 0)
 #endif
 
+/* va_copy() is __va_copy() in old gcc versions.
+ * According to the autoconf manual, using
+ * memcpy(&dst, &src, sizeof(va_list))
+ * gives maximum portability. */
+#ifndef va_copy
+# ifdef __va_copy
+#  define va_copy(dest, src) __va_copy((dest), (src))
+# else
+#  define va_copy(dest, src) memcpy(&(dest), &(src), sizeof(va_list))
+# endif
+#endif
+
 #endif /* ZEND_PORTABILITY_H */
 
 /*
index 68b61304b8635d5bb1503efdd3c09800c6a820c5..32cc648a2824784b7c28b40019e0c7382836483a 100644 (file)
@@ -167,7 +167,6 @@ ZEND_DECLARE_MODULE_GLOBALS(soap)
 
 static void (*old_error_handler)(int, const char *, const uint32_t, const char*, va_list);
 
-#ifdef va_copy
 #define call_old_error_handler(error_num, error_filename, error_lineno, format, args) \
 { \
        va_list copy; \
@@ -175,12 +174,6 @@ static void (*old_error_handler)(int, const char *, const uint32_t, const char*,
        old_error_handler(error_num, error_filename, error_lineno, format, copy); \
        va_end(copy); \
 }
-#else
-#define call_old_error_handler(error_num, error_filename, error_lineno, format, args) \
-{ \
-       old_error_handler(error_num, error_filename, error_lineno, format, args); \
-}
-#endif
 
 #define PHP_SOAP_SERVER_CLASSNAME "SoapServer"
 #define PHP_SOAP_CLIENT_CLASSNAME "SoapClient"
@@ -2163,19 +2156,14 @@ static void soap_error_handler(int error_num, const char *error_filename, const
                        char* code = SOAP_GLOBAL(error_code);
                        char buffer[1024];
                        size_t buffer_len;
-#ifdef va_copy
                        va_list argcopy;
-#endif
                        zend_object **old_objects;
                        int old = PG(display_errors);
 
-#ifdef va_copy
                        va_copy(argcopy, args);
                        buffer_len = vslprintf(buffer, sizeof(buffer)-1, format, argcopy);
                        va_end(argcopy);
-#else
-                       buffer_len = vslprintf(buffer, sizeof(buffer)-1, format, args);
-#endif
+
                        buffer[sizeof(buffer)-1]=0;
                        if (buffer_len > sizeof(buffer) - 1 || buffer_len == (size_t)-1) {
                                buffer_len = sizeof(buffer) - 1;
@@ -2216,9 +2204,7 @@ static void soap_error_handler(int error_num, const char *error_filename, const
                int old = PG(display_errors);
                int fault = 0;
                zval fault_obj;
-#ifdef va_copy
                va_list argcopy;
-#endif
 
                if (error_num == E_USER_ERROR ||
                    error_num == E_COMPILE_ERROR ||
@@ -2246,13 +2232,10 @@ static void soap_error_handler(int error_num, const char *error_filename, const
                                size_t buffer_len;
                                zval outbuflen;
 
-#ifdef va_copy
                                va_copy(argcopy, args);
                                buffer_len = vslprintf(buffer, sizeof(buffer)-1, format, argcopy);
                                va_end(argcopy);
-#else
-                               buffer_len = vslprintf(buffer, sizeof(buffer)-1, format, args);
-#endif
+
                                buffer[sizeof(buffer)-1]=0;
                                if (buffer_len > sizeof(buffer) - 1 || buffer_len == (size_t)-1) {
                                        buffer_len = sizeof(buffer) - 1;
index 116485a811bea8ff31fb20fd79b9457249f9abac..53926d23216ce2116d6c76af6e558732d2f94039 100644 (file)
@@ -240,14 +240,6 @@ typedef unsigned int socklen_t;
 # endif
 #endif
 
-#ifndef va_copy
-# ifdef __va_copy
-#  define va_copy(ap1, ap2)         __va_copy((ap1), (ap2))
-# else
-#  define va_copy(ap1, ap2)         memcpy((&ap1), (&ap2), sizeof(va_list))
-# endif
-#endif
-
 #include "php_stdint.h"
 
 #include "zend_hash.h"