Skip to content

Commit 7c86d86

Browse files
authored
Reuse existing Zend parameter error helpers for standard error paths (#22033)
Cleaning up the manually constructed standard parameter errors to use existing Zend helpers in bulk. This enhance readability and align with how those errors have been thrown in most places.
1 parent 8c63ec4 commit 7c86d86

7 files changed

Lines changed: 18 additions & 19 deletions

File tree

Zend/zend_builtin_functions.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -970,7 +970,7 @@ ZEND_FUNCTION(method_exists)
970970
RETURN_FALSE;
971971
}
972972
} else {
973-
zend_argument_type_error(1, "must be of type object|string, %s given", zend_zval_value_name(klass));
973+
zend_wrong_parameter_type_error(1, Z_EXPECTED_OBJECT_OR_STRING, klass);
974974
RETURN_THROWS();
975975
}
976976

@@ -1024,7 +1024,7 @@ static void _property_exists(zval *return_value, const zval *object, zend_string
10241024
} else if (Z_TYPE_P(object) == IS_OBJECT) {
10251025
ce = Z_OBJCE_P(object);
10261026
} else {
1027-
zend_argument_type_error(1, "must be of type object|string, %s given", zend_zval_value_name(object));
1027+
zend_wrong_parameter_type_error(1, Z_EXPECTED_OBJECT_OR_STRING, object);
10281028
RETURN_THROWS();
10291029
}
10301030

ext/dom/token_list.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -484,7 +484,7 @@ static bool dom_validate_tokens_varargs(const zval *args, uint32_t argc)
484484
{
485485
for (uint32_t i = 0; i < argc; i++) {
486486
if (Z_TYPE(args[i]) != IS_STRING) {
487-
zend_argument_type_error(i + 1, "must be of type string, %s given", zend_zval_value_name(&args[i]));
487+
zend_wrong_parameter_type_error(i + 1, Z_EXPECTED_STRING, &args[i]);
488488
return false;
489489
}
490490

ext/dom/xml_document.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ static void load_from_helper(INTERNAL_FUNCTION_PARAMETERS, int mode)
145145
}
146146

147147
if (!source_len) {
148-
zend_argument_value_error(1, "must not be empty");
148+
zend_argument_must_not_be_empty_error(1);
149149
RETURN_THROWS();
150150
}
151151

ext/hash/hash.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1112,12 +1112,12 @@ PHP_FUNCTION(hash_equals)
11121112

11131113
/* We only allow comparing string to prevent unexpected results. */
11141114
if (Z_TYPE_P(known_zval) != IS_STRING) {
1115-
zend_argument_type_error(1, "must be of type string, %s given", zend_zval_value_name(known_zval));
1115+
zend_wrong_parameter_type_error(1, Z_EXPECTED_STRING, known_zval);
11161116
RETURN_THROWS();
11171117
}
11181118

11191119
if (Z_TYPE_P(user_zval) != IS_STRING) {
1120-
zend_argument_type_error(2, "must be of type string, %s given", zend_zval_value_name(user_zval));
1120+
zend_wrong_parameter_type_error(2, Z_EXPECTED_STRING, user_zval);
11211121
RETURN_THROWS();
11221122
}
11231123

ext/pdo/pdo_stmt.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1179,7 +1179,7 @@ PHP_METHOD(PDOStatement, fetchAll)
11791179
zend_class_entry *fetch_class = NULL;
11801180
if (arg2) {
11811181
if (Z_TYPE_P(arg2) != IS_STRING) {
1182-
zend_argument_type_error(2, "must be of type string, %s given", zend_zval_value_name(arg2));
1182+
zend_wrong_parameter_type_error(2, Z_EXPECTED_STRING, arg2);
11831183
RETURN_THROWS();
11841184
}
11851185
fetch_class = zend_lookup_class(Z_STR_P(arg2));
@@ -1228,7 +1228,7 @@ PHP_METHOD(PDOStatement, fetchAll)
12281228
if (arg2) {
12291229
// Reuse convert_to_long(arg2); ?
12301230
if (Z_TYPE_P(arg2) != IS_LONG) {
1231-
zend_argument_type_error(2, "must be of type int, %s given", zend_zval_value_name(arg2));
1231+
zend_wrong_parameter_type_error(2, Z_EXPECTED_LONG, arg2);
12321232
RETURN_THROWS();
12331233
}
12341234
if (Z_LVAL_P(arg2) < 0) {
@@ -1698,7 +1698,7 @@ bool pdo_stmt_setup_fetch_mode(pdo_stmt_t *stmt, zend_long mode, uint32_t mode_a
16981698
return false;
16991699
}
17001700
if (Z_TYPE(args[0]) != IS_STRING) {
1701-
zend_argument_type_error(arg1_arg_num, "must be of type string, %s given", zend_zval_value_name(&args[0]));
1701+
zend_wrong_parameter_type_error(arg1_arg_num, Z_EXPECTED_STRING, &args[0]);
17021702
return false;
17031703
}
17041704
cep = zend_lookup_class(Z_STR(args[0]));
@@ -1710,8 +1710,7 @@ bool pdo_stmt_setup_fetch_mode(pdo_stmt_t *stmt, zend_long mode, uint32_t mode_a
17101710
/* TODO: Improve logic? */
17111711
if (variadic_num_args == 2) {
17121712
if (Z_TYPE(args[1]) != IS_NULL && Z_TYPE(args[1]) != IS_ARRAY) {
1713-
zend_argument_type_error(constructor_arg_num, "must be of type ?array, %s given",
1714-
zend_zval_value_name(&args[1]));
1713+
zend_wrong_parameter_type_error(constructor_arg_num, Z_EXPECTED_ARRAY_OR_NULL, &args[1]);
17151714
return false;
17161715
}
17171716
if (Z_TYPE(args[1]) == IS_ARRAY && zend_hash_num_elements(Z_ARRVAL(args[1]))) {
@@ -1736,7 +1735,7 @@ bool pdo_stmt_setup_fetch_mode(pdo_stmt_t *stmt, zend_long mode, uint32_t mode_a
17361735
return false;
17371736
}
17381737
if (Z_TYPE(args[0]) != IS_OBJECT) {
1739-
zend_argument_type_error(arg1_arg_num, "must be of type object, %s given", zend_zval_value_name(&args[0]));
1738+
zend_wrong_parameter_type_error(arg1_arg_num, Z_EXPECTED_OBJECT, &args[0]);
17401739
return false;
17411740
}
17421741

ext/spl/php_spl.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ PHP_FUNCTION(class_parents)
108108
}
109109

110110
if (Z_TYPE_P(obj) != IS_OBJECT && Z_TYPE_P(obj) != IS_STRING) {
111-
zend_argument_type_error(1, "must be of type object|string, %s given", zend_zval_value_name(obj));
111+
zend_wrong_parameter_type_error(1, Z_EXPECTED_OBJECT_OR_STRING, obj);
112112
RETURN_THROWS();
113113
}
114114

@@ -141,7 +141,7 @@ PHP_FUNCTION(class_implements)
141141
RETURN_THROWS();
142142
}
143143
if (Z_TYPE_P(obj) != IS_OBJECT && Z_TYPE_P(obj) != IS_STRING) {
144-
zend_argument_type_error(1, "must be of type object|string, %s given", zend_zval_value_name(obj));
144+
zend_wrong_parameter_type_error(1, Z_EXPECTED_OBJECT_OR_STRING, obj);
145145
RETURN_THROWS();
146146
}
147147

@@ -170,7 +170,7 @@ PHP_FUNCTION(class_uses)
170170
RETURN_THROWS();
171171
}
172172
if (Z_TYPE_P(obj) != IS_OBJECT && Z_TYPE_P(obj) != IS_STRING) {
173-
zend_argument_type_error(1, "must be of type object|string, %s given", zend_zval_value_name(obj));
173+
zend_wrong_parameter_type_error(1, Z_EXPECTED_OBJECT_OR_STRING, obj);
174174
RETURN_THROWS();
175175
}
176176

ext/standard/array.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1111,7 +1111,7 @@ PHP_FUNCTION(min)
11111111
/* mixed min ( array $values ) */
11121112
if (argc == 1) {
11131113
if (Z_TYPE(args[0]) != IS_ARRAY) {
1114-
zend_argument_type_error(1, "must be of type array, %s given", zend_zval_value_name(&args[0]));
1114+
zend_wrong_parameter_type_error(1, Z_EXPECTED_ARRAY, &args[0]);
11151115
RETURN_THROWS();
11161116
} else {
11171117
zval *result = zend_hash_minmax(Z_ARRVAL(args[0]), php_data_compare, 0);
@@ -1239,7 +1239,7 @@ PHP_FUNCTION(max)
12391239
/* mixed max ( array $values ) */
12401240
if (argc == 1) {
12411241
if (Z_TYPE(args[0]) != IS_ARRAY) {
1242-
zend_argument_type_error(1, "must be of type array, %s given", zend_zval_value_name(&args[0]));
1242+
zend_wrong_parameter_type_error(1, Z_EXPECTED_ARRAY, &args[0]);
12431243
RETURN_THROWS();
12441244
} else {
12451245
zval *result = zend_hash_minmax(Z_ARRVAL(args[0]), php_data_compare, 1);
@@ -4113,7 +4113,7 @@ static zend_always_inline void php_array_replace_wrapper(INTERNAL_FUNCTION_PARAM
41134113
zval *arg = args + i;
41144114

41154115
if (Z_TYPE_P(arg) != IS_ARRAY) {
4116-
zend_argument_type_error(i + 1, "must be of type array, %s given", zend_zval_value_name(arg));
4116+
zend_wrong_parameter_type_error(i + 1, Z_EXPECTED_ARRAY, arg);
41174117
RETURN_THROWS();
41184118
}
41194119
}
@@ -6721,7 +6721,7 @@ PHP_FUNCTION(array_map)
67216721

67226722
if (n_arrays == 1) {
67236723
if (Z_TYPE(arrays[0]) != IS_ARRAY) {
6724-
zend_argument_type_error(2, "must be of type array, %s given", zend_zval_value_name(&arrays[0]));
6724+
zend_wrong_parameter_type_error(2, Z_EXPECTED_ARRAY, &arrays[0]);
67256725
RETURN_THROWS();
67266726
}
67276727
const HashTable *input = Z_ARRVAL(arrays[0]);

0 commit comments

Comments
 (0)