diff options
author | Stanislav Malyshev <stas@php.net> | 2004-12-06 15:50:27 +0000 |
---|---|---|
committer | Stanislav Malyshev <stas@php.net> | 2004-12-06 15:50:27 +0000 |
commit | 9e9c193e1bf9c88b87e0a567d182a3ee03f054ce (patch) | |
tree | eb21c3f7d3f3c4ad1108d71b39ee4625e471ff89 /Zend/zend.c | |
parent | 7c83c4e41873c355b5bb0bf73a26208413d3475a (diff) | |
download | php-git-9e9c193e1bf9c88b87e0a567d182a3ee03f054ce.tar.gz |
port fix for #30998: Crash when user error handler returns false on amd64
Diffstat (limited to 'Zend/zend.c')
-rw-r--r-- | Zend/zend.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/Zend/zend.c b/Zend/zend.c index 97dfcd3a91..7737280c0a 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -874,6 +874,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; @@ -943,7 +944,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; |