summaryrefslogtreecommitdiff
path: root/Zend/zend_execute_API.c
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>2004-02-04 23:48:39 +0000
committerZeev Suraski <zeev@php.net>2004-02-04 23:48:39 +0000
commite28ab687d23c723fc6048c14aaeeac89828b4023 (patch)
treed286b3d2e222638a527399855fd280eecf305714 /Zend/zend_execute_API.c
parent4a3c015dd756d3d8a446b721e4e5c595d15811e0 (diff)
downloadphp-git-e28ab687d23c723fc6048c14aaeeac89828b4023.tar.gz
Fix exceptions happening inside internal functions called through
zend_user_function()
Diffstat (limited to 'Zend/zend_execute_API.c')
-rw-r--r--Zend/zend_execute_API.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c
index fb2b2b7082..09cd8dc5b4 100644
--- a/Zend/zend_execute_API.c
+++ b/Zend/zend_execute_API.c
@@ -547,12 +547,11 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TS
}
/* Initialize execute_data */
- EX(fbc) = NULL;
- EX(object) = NULL;
- EX(Ts) = NULL;
- EX(op_array) = NULL;
- EX(opline) = NULL;
- *fci->retval_ptr_ptr = NULL;
+ if (EG(current_execute_data)) {
+ execute_data = *EG(current_execute_data);
+ } else {
+ memset(&execute_data, 0, sizeof(zend_execute_data));
+ }
if (!fci_cache || !fci_cache->initialized) {
if (fci->function_name->type==IS_ARRAY) { /* assume array($obj, $name) couple */