diff options
author | Stanislav Malyshev <stas@php.net> | 2012-10-05 08:14:20 +0200 |
---|---|---|
committer | Stanislav Malyshev <stas@php.net> | 2012-10-05 08:14:20 +0200 |
commit | 531e2533dd2baf5cf10e8de7074ca0b94386dba4 (patch) | |
tree | 7407ddaafd80f6a121db76b56d5afad68b4fe191 /Zend/zend_execute_API.c | |
parent | bda93f54059f99752d03c1d27a6128d6b4264858 (diff) | |
download | php-git-531e2533dd2baf5cf10e8de7074ca0b94386dba4.tar.gz |
Use zend_execute_internal always to call internal functions
Diffstat (limited to 'Zend/zend_execute_API.c')
-rw-r--r-- | Zend/zend_execute_API.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 271d753247..9787966f27 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -39,7 +39,7 @@ #endif ZEND_API void (*zend_execute)(zend_op_array *op_array TSRMLS_DC); -ZEND_API void (*zend_execute_internal)(zend_execute_data *execute_data_ptr, int return_value_used TSRMLS_DC); +ZEND_API void (*zend_execute_internal)(zend_execute_data *execute_data_ptr, zend_fcall_info *fci, int return_value_used TSRMLS_DC); /* true globals */ ZEND_API const zend_fcall_info empty_fcall_info = { 0, NULL, NULL, NULL, NULL, 0, NULL, NULL, 0 }; @@ -976,15 +976,12 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TS if (EX(function_state).function->common.scope) { EG(scope) = EX(function_state).function->common.scope; } - - if (!zend_execute_internal) { + if(EXPECTED(zend_execute_internal == NULL)) { /* saves one function call if zend_execute_internal is not used */ ((zend_internal_function *) EX(function_state).function)->handler(fci->param_count, *fci->retval_ptr_ptr, fci->retval_ptr_ptr, fci->object_ptr, 1 TSRMLS_CC); } else { - zend_execute_internal(&execute_data, 1 TSRMLS_CC); + zend_execute_internal(&execute_data, fci, 1 TSRMLS_CC); } - - /* We shouldn't fix bad extensions here, because it can break proper ones (Bug #34045) if (!EX(function_state).function->common.return_reference) |