summaryrefslogtreecommitdiff
path: root/Zend/zend.c
diff options
context:
space:
mode:
authorStanislav Malyshev <stas@php.net>2004-12-06 15:50:27 +0000
committerStanislav Malyshev <stas@php.net>2004-12-06 15:50:27 +0000
commit9e9c193e1bf9c88b87e0a567d182a3ee03f054ce (patch)
treeeb21c3f7d3f3c4ad1108d71b39ee4625e471ff89 /Zend/zend.c
parent7c83c4e41873c355b5bb0bf73a26208413d3475a (diff)
downloadphp-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.c11
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;