From: Dmitry Stogov Date: Wed, 6 Jul 2005 06:58:44 +0000 (+0000) Subject: Fixed SIGSEGV during error processing on some systems (linux/ppc) X-Git-Tag: php-5.1.0b3~165 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=61d6c4e616ba9ad27aa3bb10f3ceacf23b395e51;p=php Fixed SIGSEGV during error processing on some systems (linux/ppc) --- diff --git a/ext/soap/soap.c b/ext/soap/soap.c index a2f034eac6..2efc6356c6 100644 --- a/ext/soap/soap.c +++ b/ext/soap/soap.c @@ -1939,6 +1939,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; + va_list argcopy; if (error_num == E_USER_ERROR || error_num == E_COMPILE_ERROR || @@ -1954,7 +1955,13 @@ static void soap_error_handler(int error_num, const char *error_filename, const INIT_ZVAL(outbuflen); +#ifdef va_copy + va_copy(argcopy, args); + buffer_len = vsnprintf(buffer, sizeof(buffer)-1, format, argcopy); + va_end(argcopy); +#else buffer_len = vsnprintf(buffer, sizeof(buffer)-1, format, args); +#endif buffer[sizeof(buffer)-1]=0; if (buffer_len > sizeof(buffer) - 1 || buffer_len < 0) { buffer_len = sizeof(buffer) - 1;