summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>2004-02-11 13:01:39 +0000
committerZeev Suraski <zeev@php.net>2004-02-11 13:01:39 +0000
commit75390796bed8ffe6e66ebd3e555cd25bdeab6571 (patch)
tree4e9d4720a58b5738006caa59f7b00b7bca5746ee
parent5731108c550ee8dfea673bdefb5eafa2c5536c38 (diff)
downloadphp-git-75390796bed8ffe6e66ebd3e555cd25bdeab6571.tar.gz
Fix bug #25038
-rw-r--r--Zend/zend_execute_API.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c
index 3ace0a2565..02d8e8bae7 100644
--- a/Zend/zend_execute_API.c
+++ b/Zend/zend_execute_API.c
@@ -551,9 +551,18 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TS
if (EG(current_execute_data)) {
execute_data = *EG(current_execute_data);
} else {
+ /* This only happens when we're called outside any execute()'s
+ * It shouldn't be strictly necessary to NULL execute_data out,
+ * but it may make bugs easier to spot
+ */
memset(&execute_data, 0, sizeof(zend_execute_data));
}
+ /* we may return SUCCESS, and yet retval may be uninitialized,
+ * if there was an exception...
+ */
+ *fci->retval_ptr_ptr = NULL;
+
if (!fci_cache || !fci_cache->initialized) {
if (fci->function_name->type==IS_ARRAY) { /* assume array($obj, $name) couple */
zval **tmp_object_ptr, **tmp_real_function_name;