summaryrefslogtreecommitdiff
path: root/Zend/zend_API.c
diff options
context:
space:
mode:
authorNikita Popov <nikic@php.net>2015-04-04 10:24:00 +0200
committerNikita Popov <nikic@php.net>2015-04-04 10:28:37 +0200
commitf920f974c4ddc64fcfd6a5177707b72c1c88fe04 (patch)
tree77ab13ecf57feaa2f633228efe6fd55677a39e90 /Zend/zend_API.c
parentdcaa79546b25723136e37589e56fc602a503db12 (diff)
downloadphp-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.c32
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;
}