From b700e7a9dbfac76dc5e358746cde834b1b2d0df4 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Mon, 6 Dec 2004 15:46:04 +0000 Subject: [PATCH] port fix for #30998: Crash when user error handler returns false on amd64 --- Zend/zend.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Zend/zend.c b/Zend/zend.c index f10c7fc507..5119733426 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -865,6 +865,7 @@ ZEND_API int zend_get_configuration_directive(char *name, uint name_length, zval ZEND_API void zend_error(int type, const char *format, ...) { va_list args; + va_list usr_copy; zval ***params; zval *retval; zval *z_error_type, *z_error_message, *z_error_filename, *z_error_lineno, *z_context; @@ -936,7 +937,15 @@ ZEND_API void zend_error(int type, const char *format, ...) ALLOC_INIT_ZVAL(z_error_lineno); ALLOC_INIT_ZVAL(z_context); - z_error_message->value.str.len = zend_vspprintf(&z_error_message->value.str.val, 0, format, args); +#if defined(va_copy) + va_copy(usr_copy, args); +#else + usr_copy = args; +#endif + z_error_message->value.str.len = zend_vspprintf(&z_error_message->value.str.val, 0, format, usr_copy); +#if defined(va_copy) + va_end(usr_copy); +#endif z_error_message->type = IS_STRING; z_error_type->value.lval = type; -- 2.50.1