diff options
author | Nikita Popov <nikic@php.net> | 2015-04-04 10:24:00 +0200 |
---|---|---|
committer | Nikita Popov <nikic@php.net> | 2015-04-04 10:28:37 +0200 |
commit | f920f974c4ddc64fcfd6a5177707b72c1c88fe04 (patch) | |
tree | 77ab13ecf57feaa2f633228efe6fd55677a39e90 /Zend/zend_API.c | |
parent | dcaa79546b25723136e37589e56fc602a503db12 (diff) | |
download | php-git-f920f974c4ddc64fcfd6a5177707b72c1c88fe04.tar.gz |
Clarify that some zpp errors are just for debugging
These occur when the extension author messed up, not during normal
script execution.
Make these core errors and show them even with PARAMS_QUIET.
Diffstat (limited to 'Zend/zend_API.c')
-rw-r--r-- | Zend/zend_API.c | 32 |
1 files changed, 13 insertions, 19 deletions
diff --git a/Zend/zend_API.c b/Zend/zend_API.c index 310d9fb8e1..8cd7ddd5d6 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -793,6 +793,15 @@ ZEND_API int zend_parse_parameter(int flags, int arg_num, zval *arg, const char return ret; } +static void zend_parse_parameters_debug_error(const char *msg) { + zend_function *active_function = EG(current_execute_data)->func; + const char *class_name = active_function->common.scope + ? active_function->common.scope->name->val : ""; + zend_error_noreturn(E_CORE_ERROR, "%s%s%s(): %s", + class_name, class_name[0] ? "::" : "", + active_function->common.function_name->val, msg); +} + static int zend_parse_va_args(int num_args, const char *type_spec, va_list *va, int flags) /* {{{ */ { const char *spec_walk; @@ -834,15 +843,8 @@ static int zend_parse_va_args(int num_args, const char *type_spec, va_list *va, case '*': case '+': if (have_varargs) { - if (!(flags & ZEND_PARSE_PARAMS_QUIET)) { - zend_function *active_function = EG(current_execute_data)->func; - const char *class_name = active_function->common.scope ? active_function->common.scope->name->val : ""; - - zend_error(E_WARNING, "%s%s%s(): only one varargs specifier (* or +) is permitted", - class_name, - class_name[0] ? "::" : "", - active_function->common.function_name->val); - } + zend_parse_parameters_debug_error( + "only one varargs specifier (* or +) is permitted"); return FAILURE; } have_varargs = 1; @@ -855,14 +857,7 @@ static int zend_parse_va_args(int num_args, const char *type_spec, va_list *va, break; default: - if (!(flags & ZEND_PARSE_PARAMS_QUIET)) { - zend_function *active_function = EG(current_execute_data)->func; - const char *class_name = active_function->common.scope ? active_function->common.scope->name->val : ""; - zend_error(E_WARNING, "%s%s%s(): bad type specifier while parsing parameters", - class_name, - class_name[0] ? "::" : "", - active_function->common.function_name->val); - } + zend_parse_parameters_debug_error("bad type specifier while parsing parameters"); return FAILURE; } } @@ -896,8 +891,7 @@ static int zend_parse_va_args(int num_args, const char *type_spec, va_list *va, arg_count = ZEND_CALL_NUM_ARGS(EG(current_execute_data)); if (num_args > arg_count) { - zend_error(E_WARNING, "%s(): could not obtain parameters for parsing", - get_active_function_name()); + zend_parse_parameters_debug_error("could not obtain parameters for parsing"); return FAILURE; } |