From 61d6c4e616ba9ad27aa3bb10f3ceacf23b395e51 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Wed, 6 Jul 2005 06:58:44 +0000 Subject: [PATCH] Fixed SIGSEGV during error processing on some systems (linux/ppc) --- ext/soap/soap.c | 7 +++++++ 1 file changed, 7 insertions(+) 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; -- 2.50.1