summaryrefslogtreecommitdiff
path: root/Zend/zend_execute_API.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2015-02-25 10:37:21 +0300
committerDmitry Stogov <dmitry@zend.com>2015-02-25 10:37:21 +0300
commitc2c78dc963a3360035dfaca417fa3351bd6c5e1f (patch)
tree2533a5efee372d1fab427614b80be8ae673bcfe1 /Zend/zend_execute_API.c
parent5f278e4d3a97ea0777e471424b52110386f1742e (diff)
downloadphp-git-c2c78dc963a3360035dfaca417fa3351bd6c5e1f.tar.gz
Added specialized versions of DO_FCALL handler:
DO_ICALL - for internal functions DO_UCALL - for user functions DO_FCALL_BY_NAME - plain, most probably user, funcstions (not methods)
Diffstat (limited to 'Zend/zend_execute_API.c')
-rw-r--r--Zend/zend_execute_API.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c
index fc94beeb7f..f52d9f33ce 100644
--- a/Zend/zend_execute_API.c
+++ b/Zend/zend_execute_API.c
@@ -691,7 +691,10 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache) /
EG(current_execute_data) = &dummy_execute_data;
} else if (EG(current_execute_data)->func &&
ZEND_USER_CODE(EG(current_execute_data)->func->common.type) &&
- EG(current_execute_data)->opline->opcode != ZEND_DO_FCALL) {
+ EG(current_execute_data)->opline->opcode != ZEND_DO_FCALL &&
+ EG(current_execute_data)->opline->opcode != ZEND_DO_ICALL &&
+ EG(current_execute_data)->opline->opcode != ZEND_DO_UCALL &&
+ EG(current_execute_data)->opline->opcode != ZEND_DO_FCALL_BY_NAME) {
/* Insert fake frame in case of include or magic calls */
dummy_execute_data = *EG(current_execute_data);
dummy_execute_data.prev_execute_data = EG(current_execute_data);