mirror of
https://github.com/php/php-src.git
synced 2024-11-27 03:44:07 +08:00
Improve error message
This commit is contained in:
parent
3b2f56275a
commit
09e76476ef
@ -3001,8 +3001,10 @@ int zend_recv_handler(ZEND_OPCODE_HANDLER_ARGS)
|
||||
zend_uint arg_num = opline->op1.u.constant.value.lval;
|
||||
|
||||
if (zend_ptr_stack_get_arg(arg_num, (void **) ¶m TSRMLS_CC)==FAILURE) {
|
||||
char *space;
|
||||
char *class_name = get_active_class_name(&space TSRMLS_CC);
|
||||
zend_verify_arg_type((zend_function *) EG(active_op_array), arg_num, NULL TSRMLS_CC);
|
||||
zend_error(E_WARNING, "Missing argument %ld for %s()", opline->op1.u.constant.value.lval, get_active_function_name(TSRMLS_C));
|
||||
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(*EX_T(opline->result.u.var).var.ptr_ptr);
|
||||
}
|
||||
|
@ -142,6 +142,7 @@ void execute_new_code(TSRMLS_D);
|
||||
|
||||
|
||||
/* services */
|
||||
ZEND_API char *get_active_class_name(char **space TSRMLS_DC);
|
||||
ZEND_API char *get_active_function_name(TSRMLS_D);
|
||||
ZEND_API char *zend_get_executed_filename(TSRMLS_D);
|
||||
ZEND_API uint zend_get_executed_lineno(TSRMLS_D);
|
||||
|
@ -297,6 +297,35 @@ void shutdown_executor(TSRMLS_D)
|
||||
}
|
||||
|
||||
|
||||
/* return class name and "::" or "". */
|
||||
ZEND_API char *get_active_class_name(char **space TSRMLS_DC)
|
||||
{
|
||||
if (!zend_is_executing(TSRMLS_C)) {
|
||||
if (space) {
|
||||
*space = "";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
switch (EG(function_state_ptr)->function->type) {
|
||||
case ZEND_USER_FUNCTION:
|
||||
case ZEND_INTERNAL_FUNCTION:
|
||||
{
|
||||
zend_class_entry *ce = EG(function_state_ptr)->function->common.scope;
|
||||
|
||||
if (space) {
|
||||
*space = ce ? "::" : "";
|
||||
}
|
||||
return ce ? ce->name : "";
|
||||
}
|
||||
default:
|
||||
if (space) {
|
||||
*space = "";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ZEND_API char *get_active_function_name(TSRMLS_D)
|
||||
{
|
||||
if (!zend_is_executing(TSRMLS_C)) {
|
||||
|
28
main/main.c
28
main/main.c
@ -424,34 +424,6 @@ static int php_during_module_shutdown()
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ get_active_class_name */
|
||||
static char *get_active_class_name(char **space TSRMLS_DC)
|
||||
{
|
||||
if (!zend_is_executing(TSRMLS_C)) {
|
||||
if (space) {
|
||||
*space = "";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
switch (EG(function_state_ptr)->function->type) {
|
||||
case ZEND_USER_FUNCTION:
|
||||
case ZEND_INTERNAL_FUNCTION:
|
||||
{
|
||||
zend_class_entry *ce = EG(function_state_ptr)->function->common.scope;
|
||||
|
||||
if (space) {
|
||||
*space = ce ? "::" : "";
|
||||
}
|
||||
return ce ? ce->name : "";
|
||||
}
|
||||
default:
|
||||
if (space) {
|
||||
*space = "";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
/* }}} */
|
||||
|
||||
/* {{{ php_verror */
|
||||
|
Loading…
Reference in New Issue
Block a user