summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-10-29 19:48:28 -0400
committerNikita Popov <nikita.ppv@gmail.com>2019-10-30 10:27:52 +0100
commite0be51d0825bf91a9e9aafb9aeef165ee710bdbc (patch)
treeb2fd1506fb397f1d788fd1b606a2ddd465109107
parent96f361dca08bb6a7c9e0a729b31ac3eefe480215 (diff)
downloadphp-git-e0be51d0825bf91a9e9aafb9aeef165ee710bdbc.tar.gz
Use ArgumentCountError in IntlGregorianCalendar ctor
-rw-r--r--ext/intl/calendar/gregoriancalendar_methods.cpp24
-rw-r--r--ext/intl/tests/gregoriancalendar___construct_error.phpt45
2 files changed, 26 insertions, 43 deletions
diff --git a/ext/intl/calendar/gregoriancalendar_methods.cpp b/ext/intl/calendar/gregoriancalendar_methods.cpp
index 66fdbb2f2f..e111a0d6a2 100644
--- a/ext/intl/calendar/gregoriancalendar_methods.cpp
+++ b/ext/intl/calendar/gregoriancalendar_methods.cpp
@@ -59,25 +59,15 @@ static void _php_intlgregcal_constructor_body(
// parameter number validation / variant determination
if (ZEND_NUM_ARGS() > 6 ||
zend_get_parameters_array_ex(ZEND_NUM_ARGS(), args) == FAILURE) {
- intl_error_set(NULL, U_ILLEGAL_ARGUMENT_ERROR,
- "intlgregcal_create_instance: too many arguments", 0);
- if (!is_constructor) {
- zval_ptr_dtor(return_value);
- RETVAL_NULL();
- }
+ zend_argument_count_error("Too many arguments");
return;
}
+
for (variant = ZEND_NUM_ARGS();
variant > 0 && Z_TYPE(args[variant - 1]) == IS_NULL;
variant--) {}
if (variant == 4) {
- intl_error_set(NULL, U_ILLEGAL_ARGUMENT_ERROR,
- "intlgregcal_create_instance: no variant with 4 arguments "
- "(excluding trailing NULLs)", 0);
- if (!is_constructor) {
- zval_ptr_dtor(return_value);
- RETVAL_NULL();
- }
+ zend_argument_count_error("No variant with 4 arguments (excluding trailing NULLs)");
return;
}
@@ -85,20 +75,12 @@ static void _php_intlgregcal_constructor_body(
if (variant <= 2) {
if (zend_parse_parameters(MIN(ZEND_NUM_ARGS(), 2),
"|z!s!", &tz_object, &locale, &locale_len) == FAILURE) {
- if (!is_constructor) {
- zval_ptr_dtor(return_value);
- RETVAL_NULL();
- }
return;
}
}
if (variant > 2 && zend_parse_parameters(ZEND_NUM_ARGS(),
"lll|lll", &largs[0], &largs[1], &largs[2], &largs[3], &largs[4],
&largs[5]) == FAILURE) {
- if (!is_constructor) {
- zval_ptr_dtor(return_value);
- RETVAL_NULL();
- }
return;
}
diff --git a/ext/intl/tests/gregoriancalendar___construct_error.phpt b/ext/intl/tests/gregoriancalendar___construct_error.phpt
index bef69db877..2f468a12c5 100644
--- a/ext/intl/tests/gregoriancalendar___construct_error.phpt
+++ b/ext/intl/tests/gregoriancalendar___construct_error.phpt
@@ -8,33 +8,34 @@ if (!extension_loaded('intl'))
<?php
ini_set("intl.error_level", E_WARNING);
-function print_exception($e) {
- echo "\nException: " . $e->getMessage() . " in " . $e->getFile() . " on line " . $e->getLine() . "\n";
+try {
+ var_dump(intlgregcal_create_instance(1,2,3,4,5,6,7));
+} catch (ArgumentCountError $e) {
+ echo $e->getMessage(), "\n";
+}
+try {
+ var_dump(intlgregcal_create_instance(1,2,3,4,5,6,7,8));
+} catch (ArgumentCountError $e) {
+ echo $e->getMessage(), "\n";
+}
+try {
+ var_dump(intlgregcal_create_instance(1,2,3,4));
+} catch (ArgumentCountError $e) {
+ echo $e->getMessage(), "\n";
}
-
-var_dump(intlgregcal_create_instance(1,2,3,4,5,6,7));
-var_dump(intlgregcal_create_instance(1,2,3,4,5,6,7,8));
-var_dump(intlgregcal_create_instance(1,2,3,4));
try {
var_dump(new IntlGregorianCalendar(1,2,NULL,4));
-} catch (IntlException $e) {
- print_exception($e);
+} catch (ArgumentCountError $e) {
+ echo $e->getMessage(), "\n";
}
try {
var_dump(new IntlGregorianCalendar(1,2,3,4,NULL,array()));
} catch (TypeError $e) {
- print_exception($e);
+ echo $e->getMessage(), "\n";
}
---EXPECTF--
-Warning: intlgregcal_create_instance(): intlgregcal_create_instance: too many arguments in %s on line %d
-NULL
-
-Warning: intlgregcal_create_instance(): intlgregcal_create_instance: too many arguments in %s on line %d
-NULL
-
-Warning: intlgregcal_create_instance(): intlgregcal_create_instance: no variant with 4 arguments (excluding trailing NULLs) in %s on line %d
-NULL
-
-Exception: IntlGregorianCalendar::__construct(): intlgregcal_create_instance: no variant with 4 arguments (excluding trailing NULLs) in %s on line %d
-
-Exception: IntlGregorianCalendar::__construct() expects parameter 6 to be int, array given in %s on line %d
+--EXPECT--
+Too many arguments
+Too many arguments
+No variant with 4 arguments (excluding trailing NULLs)
+No variant with 4 arguments (excluding trailing NULLs)
+IntlGregorianCalendar::__construct() expects parameter 6 to be int, array given