summaryrefslogtreecommitdiff
path: root/Zend/zend_execute.c
diff options
context:
space:
mode:
authorStanislav Malyshev <stas@php.net>2004-09-13 10:41:39 +0000
committerStanislav Malyshev <stas@php.net>2004-09-13 10:41:39 +0000
commit29fec3febcf2c0083cbe279b835ac8c9d64b3ac9 (patch)
tree765cd832a3d13a74096dc1787c333d0632d4a966 /Zend/zend_execute.c
parentdd1288589702b1fb44a89c1f8d0367dffc634733 (diff)
downloadphp-git-29fec3febcf2c0083cbe279b835ac8c9d64b3ac9.tar.gz
Antony Dovgal's error message improvement - #27290
Diffstat (limited to 'Zend/zend_execute.c')
-rw-r--r--Zend/zend_execute.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index ed6247d4c4..f0b1545f92 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -3371,8 +3371,18 @@ int zend_recv_handler(ZEND_OPCODE_HANDLER_ARGS)
if (zend_ptr_stack_get_arg(arg_num, (void **) &param TSRMLS_CC)==FAILURE) {
char *space;
char *class_name = get_active_class_name(&space TSRMLS_CC);
+ zend_execute_data *ptr = EG(current_execute_data);
+
+ if(ptr) {
+ ptr = ptr->prev_execute_data;
+ }
+
zend_verify_arg_type((zend_function *) EG(active_op_array), arg_num, NULL TSRMLS_CC);
- zend_error(E_WARNING, "Missing argument %ld for %s%s%s()", opline->op1.u.constant.value.lval, class_name, space, get_active_function_name(TSRMLS_C));
+ if(ptr && ptr->op_array) {
+ zend_error(E_WARNING, "Missing argument %ld for %s%s%s(), called in %s on line %d and defined", opline->op1.u.constant.value.lval, class_name, space, get_active_function_name(TSRMLS_C), ptr->op_array->filename, ptr->opline->lineno);
+ } else {
+ zend_error(E_WARNING, "Missing argument %ld for %s%s%s()", opline->op1.u.constant.value.lval, class_name, space, get_active_function_name(TSRMLS_C));
+ }
if (opline->result.op_type == IS_VAR) {
PZVAL_UNLOCK_FREE(*EX_T(opline->result.u.var).var.ptr_ptr);
}