diff -ur php-4.3.10.orig/Zend/zend.c php-4.3.10/Zend/zend.c
--- php-4.3.10.orig/Zend/zend.c Mon Dec 6 15:35:03 2004
-+++ php-4.3.10/Zend/zend.c Fri Dec 31 15:50:44 2004
-@@ -770,11 +770,7 @@
- ALLOC_INIT_ZVAL(z_error_lineno);
- ALLOC_INIT_ZVAL(z_context);
- z_error_message->value.str.val = (char *) emalloc(ZEND_ERROR_BUFFER_SIZE);
--#if defined(va_copy)
++++ php-4.3.10/Zend/zend.c Fri Dec 31 16:31:51 2004
+@@ -773,7 +773,7 @@
+ #if defined(va_copy)
va_copy(usr_copy, args);
--#else
+ #else
- usr_copy = args;
--#endif
-
- #ifdef HAVE_VSNPRINTF
- vsnprintf(z_error_message->value.str.val, ZEND_ERROR_BUFFER_SIZE, format, usr_copy);
-@@ -790,9 +786,7 @@
- /* This is risky... */
- /* z_error_message->value.str.len = vsprintf(z_error_message->value.str.val, format, args); */
++ memcpy(usr_copy, args, sizeof(va_list));
#endif
--#if defined(va_copy)
- va_end(usr_copy);
--#endif
- z_error_message->type = IS_STRING;
- z_error_type->value.lval = type;
+ #ifdef HAVE_VSNPRINTF