mirror of
https://github.com/php/php-src.git
synced 2025-08-17 22:48:57 +02:00
Refactor gotos into more elaborate ifs to eliminate goto failure
This commit is contained in:
parent
427ecdc5eb
commit
d8ef608f3d
1 changed files with 13 additions and 28 deletions
|
@ -737,10 +737,9 @@ static void zend_verify_internal_arg_type(zend_function *zf, uint32_t arg_num, z
|
|||
}
|
||||
} else if (UNEXPECTED(!ZEND_SAME_FAKE_TYPE(cur_arg_info->type_hint, Z_TYPE_P(arg)))) {
|
||||
if ((Z_TYPE_P(arg) == IS_NULL && !cur_arg_info->allow_null)
|
||||
|| !zend_verify_scalar_type_hint(cur_arg_info->type_hint, arg, strict)) {
|
||||
|| (Z_TYPE_P(arg) != IS_NULL && !zend_verify_scalar_type_hint(cur_arg_info->type_hint, arg, strict))) {
|
||||
|
||||
zend_verify_arg_error(zf, arg_num, "be of the type ", zend_get_type_by_const(cur_arg_info->type_hint), zend_zval_type_name(arg), "", arg);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -784,15 +783,10 @@ static void zend_verify_arg_type(zend_function *zf, uint32_t arg_num, zval *arg,
|
|||
zend_verify_arg_error(zf, arg_num, "be callable", "", zend_zval_type_name(arg), "", arg);
|
||||
}
|
||||
} else if (UNEXPECTED(!ZEND_SAME_FAKE_TYPE(cur_arg_info->type_hint, Z_TYPE_P(arg)))) {
|
||||
if (Z_TYPE_P(arg) == IS_NULL) {
|
||||
if (!cur_arg_info->allow_null) {
|
||||
failure:
|
||||
zend_verify_arg_error(zf, arg_num, "be of the type ", zend_get_type_by_const(cur_arg_info->type_hint), zend_zval_type_name(arg), "", arg);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (!zend_verify_scalar_type_hint(cur_arg_info->type_hint, arg, strict)) {
|
||||
goto failure;
|
||||
if ((Z_TYPE_P(arg) == IS_NULL && !cur_arg_info->allow_null)
|
||||
|| (Z_TYPE_P(arg) != IS_NULL && !zend_verify_scalar_type_hint(cur_arg_info->type_hint, arg, strict))) {
|
||||
|
||||
zend_verify_arg_error(zf, arg_num, "be of the type ", zend_get_type_by_const(cur_arg_info->type_hint), zend_zval_type_name(arg), "", arg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -923,16 +917,12 @@ static int zend_verify_internal_return_type(zend_function *zf, zval *ret, zend_b
|
|||
return 0;
|
||||
}
|
||||
} else if (UNEXPECTED(!ZEND_SAME_FAKE_TYPE(ret_info->type_hint, Z_TYPE_P(ret)))) {
|
||||
if (Z_TYPE_P(ret) == IS_NULL) {
|
||||
if (!ret_info->allow_null) {
|
||||
failure:
|
||||
zend_verify_internal_return_error(zf, "be of the type ", zend_get_type_by_const(ret_info->type_hint), zend_zval_type_name(ret), "");
|
||||
}
|
||||
if ((Z_TYPE_P(ret) == IS_NULL && !ret_info->allow_null)
|
||||
|| (Z_TYPE_P(ret) != IS_NULL && !zend_verify_scalar_type_hint(ret_info->type_hint, ret, strict))) {
|
||||
|
||||
zend_verify_internal_return_error(zf, "be of the type ", zend_get_type_by_const(ret_info->type_hint), zend_zval_type_name(ret), "");
|
||||
return 0;
|
||||
}
|
||||
if (!zend_verify_scalar_type_hint(ret_info->type_hint, ret, strict)) {
|
||||
goto failure;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
|
@ -967,15 +957,10 @@ static void zend_verify_return_type(zend_function *zf, zval *ret, zend_bool stri
|
|||
zend_verify_return_error(zf, "be callable", "", zend_zval_type_name(ret), "");
|
||||
}
|
||||
} else if (UNEXPECTED(!ZEND_SAME_FAKE_TYPE(ret_info->type_hint, Z_TYPE_P(ret)))) {
|
||||
if (Z_TYPE_P(ret) == IS_NULL) {
|
||||
if (!ret_info->allow_null) {
|
||||
failure:
|
||||
zend_verify_return_error(zf, "be of the type ", zend_get_type_by_const(ret_info->type_hint), zend_zval_type_name(ret), "");
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (!zend_verify_scalar_type_hint(ret_info->type_hint, ret, strict)) {
|
||||
goto failure;
|
||||
if ((Z_TYPE_P(ret) == IS_NULL && !ret_info->allow_null)
|
||||
|| (Z_TYPE_P(ret) != IS_NULL && !zend_verify_scalar_type_hint(ret_info->type_hint, ret, strict))) {
|
||||
|
||||
zend_verify_return_error(zf, "be of the type ", zend_get_type_by_const(ret_info->type_hint), zend_zval_type_name(ret), "");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue