summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;
}