summaryrefslogtreecommitdiff
path: root/sapi/phpdbg/phpdbg_prompt.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 /sapi/phpdbg/phpdbg_prompt.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 'sapi/phpdbg/phpdbg_prompt.c')
-rw-r--r--sapi/phpdbg/phpdbg_prompt.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sapi/phpdbg/phpdbg_prompt.c b/sapi/phpdbg/phpdbg_prompt.c
index 6e492b7aaa..72cb2e018c 100644
--- a/sapi/phpdbg/phpdbg_prompt.c
+++ b/sapi/phpdbg/phpdbg_prompt.c
@@ -1454,7 +1454,10 @@ next:
PHPDBG_G(last_line) = execute_data->opline->lineno;
/* stupid hack to make zend_do_fcall_common_helper return ZEND_VM_ENTER() instead of recursively calling zend_execute() and eventually segfaulting */
- if (execute_data->opline->opcode == ZEND_DO_FCALL && execute_data->func->type == ZEND_USER_FUNCTION) {
+ if ((execute_data->opline->opcode == ZEND_DO_FCALL ||
+ execute_data->opline->opcode == ZEND_DO_UCALL ||
+ execute_data->opline->opcode == ZEND_DO_FCALL_BY_NAME) &&
+ execute_data->func->type == ZEND_USER_FUNCTION) {
zend_execute_ex = execute_ex;
}
PHPDBG_G(vmret) = execute_data->opline->handler(execute_data);