Skip to content

Commit 7bc1cb2

Browse files
committed
Refactor zend_expected_type partially, as some ZPP errors need special handling anyway
1 parent a985c84 commit 7bc1cb2

2 files changed

Lines changed: 9 additions & 9 deletions

File tree

Zend/zend_API.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,6 @@ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_wrong_parameter_type_error(uint32_t n
229229
{
230230
static const char * const expected_error[] = {
231231
Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_STR)
232-
NULL
233232
};
234233

235234
if (EG(exception)) {
@@ -1081,7 +1080,7 @@ static zend_expected_type zend_parse_arg_impl(zval *arg, va_list *va, const char
10811080

10821081
*spec = spec_walk;
10831082

1084-
return Z_EXPECTED_LAST;
1083+
return Z_EXPECTED_OK;
10851084
}
10861085
/* }}} */
10871086

@@ -1090,7 +1089,7 @@ static zend_result zend_parse_arg(uint32_t arg_num, zval *arg, va_list *va, cons
10901089
char *error = NULL;
10911090

10921091
zend_expected_type expected_type = zend_parse_arg_impl(arg, va, spec, &error, arg_num);
1093-
if (expected_type != Z_EXPECTED_LAST) {
1092+
if (expected_type != Z_EXPECTED_OK) {
10941093
if (EG(exception)) {
10951094
return FAILURE;
10961095
}

Zend/zend_API.h

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1555,8 +1555,6 @@ static zend_always_inline zval *zend_try_array_init(zval *zv)
15551555
_(Z_EXPECTED_ARRAY_OR_LONG_OR_NULL, "of type array|int|null") \
15561556
_(Z_EXPECTED_ITERABLE, "of type Traversable|array") \
15571557
_(Z_EXPECTED_ITERABLE_OR_NULL, "of type Traversable|array|null") \
1558-
_(Z_EXPECTED_FUNC, "a valid callback") \
1559-
_(Z_EXPECTED_FUNC_OR_NULL, "a valid callback or null") \
15601558
_(Z_EXPECTED_RESOURCE, "of type resource") \
15611559
_(Z_EXPECTED_RESOURCE_OR_NULL, "of type resource or null") \
15621560
_(Z_EXPECTED_PATH, "of type string") \
@@ -1577,8 +1575,12 @@ static zend_always_inline zval *zend_try_array_init(zval *zv)
15771575
_(Z_EXPECTED_OBJECT_OR_CLASS_NAME_OR_NULL, "an object, a valid class name, or null") \
15781576
_(Z_EXPECTED_OBJECT_OR_STRING, "of type object|string") \
15791577
_(Z_EXPECTED_OBJECT_OR_STRING_OR_NULL, "of type object|string|null") \
1580-
_(Z_EXPECTED_CLASS_NAME, "a valid class name") \
1581-
_(Z_EXPECTED_CLASS_NAME_OR_NULL, "a valid class name or null") \
1578+
/* Have special error message behaviour */ \
1579+
_(Z_EXPECTED_FUNC, NULL) \
1580+
_(Z_EXPECTED_FUNC_OR_NULL, NULL) \
1581+
_(Z_EXPECTED_CLASS_NAME, NULL) \
1582+
_(Z_EXPECTED_CLASS_NAME_OR_NULL, NULL) \
1583+
_(Z_EXPECTED_OK, NULL) \
15821584

15831585
#define Z_EXPECTED_TYPE
15841586

@@ -1587,7 +1589,6 @@ static zend_always_inline zval *zend_try_array_init(zval *zv)
15871589

15881590
typedef enum _zend_expected_type {
15891591
Z_EXPECTED_TYPES(Z_EXPECTED_TYPE_ENUM)
1590-
Z_EXPECTED_LAST
15911592
} zend_expected_type;
15921593

15931594
C23_ENUM(zpp_error, uint8_t) {
@@ -1638,7 +1639,7 @@ ZEND_API ZEND_COLD void zend_class_redeclaration_error_ex(int type, zend_string
16381639
uint32_t _num_args = EX_NUM_ARGS(); \
16391640
uint32_t _i = 0; \
16401641
zval *_real_arg, *_arg = NULL; \
1641-
zend_expected_type _expected_type = Z_EXPECTED_LONG; \
1642+
zend_expected_type _expected_type = Z_EXPECTED_OK; \
16421643
char *_error = NULL; \
16431644
bool _dummy = 0; \
16441645
bool _optional = 0; \

0 commit comments

Comments
 (0)