com php-src: Fixed bug #74439 Wrong reflection on the Locale methods: NEWS ext/intl/locale/locale_class.c ext/intl/tests/locale_bu g74439.phpt
[email protected] (Joe Watkins)
| Newsgroups | php.cvs |
|---|---|
| Message-ID | <[email protected]> |
Commit: 7dc6b04f453d0111447a3bcd1f3e88a5c32c2a22 Author: Fabien Villepinte <[email protected]> Fri, 14 Apr 2017 14:08:26 +0200 Committer: Joe Watkins <[email protected]> Mon, 17 Apr 2017 07:56:47 +0100 Parents: ce330ad8aa0489e01e1fb44f3c37732ee1968e1e Branches: PHP-7.0 PHP-7.1 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=7dc6b04f453d0111447a3bcd1f3e88a5c32c2a22 Log: Fixed bug #74439 Wrong reflection on the Locale methods Bugs: https://bugs.php.net/74439 Changed paths: M NEWS M ext/intl/locale/locale_class.c A ext/intl/tests/locale_bug74439.phpt Diff: diff --git a/NEWS b/NEWS index 08a3137..59420cc 100644 --- a/NEWS +++ b/NEWS @@ -25,6 +25,7 @@ PHP NEWS - intl: . Fixed bug #74433 (wrong reflection for Normalizer methods). (villfa) + . Fixed bug #74439 (wrong reflection for Locale methods). (villfa) - MySQLnd: . Added support for MySQL 8.0 types. (Johannes) diff --git a/ext/intl/locale/locale_class.c b/ext/intl/locale/locale_class.c index 6300666..d132ef8 100644 --- a/ext/intl/locale/locale_class.c +++ b/ext/intl/locale/locale_class.c @@ -38,26 +38,34 @@ zend_class_entry *Locale_ce_ptr = NULL; ZEND_BEGIN_ARG_INFO_EX( locale_0_args, 0, 0, 0 ) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX( locale_1_arg, 0, 0, 1 ) - ZEND_ARG_INFO( 0, arg1 ) +ZEND_BEGIN_ARG_INFO_EX( locale_arg_locale, 0, 0, 1 ) + ZEND_ARG_INFO( 0, locale ) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX( locale_2_args, 0, 0, 2 ) - ZEND_ARG_INFO( 0, arg1 ) - ZEND_ARG_INFO( 0, arg2 ) +ZEND_BEGIN_ARG_INFO_EX( locale_accept_from_http_args, 0, 0, 1 ) + ZEND_ARG_INFO( 0, header ) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX( locale_3_args, 0, 0, 3 ) - ZEND_ARG_INFO( 0, arg1 ) - ZEND_ARG_INFO( 0, arg2 ) - ZEND_ARG_INFO( 0, arg3 ) +ZEND_BEGIN_ARG_INFO_EX( locale_compose_args, 0, 0, 1 ) + ZEND_ARG_INFO( 0, subtags ) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX( locale_4_args, 0, 0, 4 ) - ZEND_ARG_INFO( 0, arg1 ) - ZEND_ARG_INFO( 0, arg2 ) - ZEND_ARG_INFO( 0, arg3 ) - ZEND_ARG_INFO( 0, arg4 ) +ZEND_BEGIN_ARG_INFO_EX( locale_2_args, 0, 0, 1 ) + ZEND_ARG_INFO( 0, locale ) + ZEND_ARG_INFO( 0, in_locale ) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX( locale_filter_matches_args, 0, 0, 2 ) + ZEND_ARG_INFO( 0, langtag ) + ZEND_ARG_INFO( 0, locale ) + ZEND_ARG_INFO( 0, canonicalize ) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX( locale_lookup_args, 0, 0, 2 ) + ZEND_ARG_INFO( 0, langtag ) + ZEND_ARG_INFO( 0, locale ) + ZEND_ARG_INFO( 0, canonicalize ) + ZEND_ARG_INFO( 0, default ) ZEND_END_ARG_INFO() /* }}} */ @@ -68,23 +76,23 @@ ZEND_END_ARG_INFO() zend_function_entry Locale_class_functions[] = { ZEND_FENTRY( getDefault, zif_locale_get_default , locale_0_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) - ZEND_FENTRY( setDefault, zif_locale_set_default , locale_1_arg , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) - ZEND_FENTRY( getPrimaryLanguage, ZEND_FN( locale_get_primary_language ), locale_1_arg , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) - ZEND_FENTRY( getScript, ZEND_FN( locale_get_script ), locale_1_arg , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) - ZEND_FENTRY( getRegion, ZEND_FN( locale_get_region ), locale_1_arg , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) - ZEND_FENTRY( getKeywords, ZEND_FN( locale_get_keywords ), locale_1_arg , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) + ZEND_FENTRY( setDefault, zif_locale_set_default , locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) + ZEND_FENTRY( getPrimaryLanguage, ZEND_FN( locale_get_primary_language ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) + ZEND_FENTRY( getScript, ZEND_FN( locale_get_script ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) + ZEND_FENTRY( getRegion, ZEND_FN( locale_get_region ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) + ZEND_FENTRY( getKeywords, ZEND_FN( locale_get_keywords ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) ZEND_FENTRY( getDisplayScript, ZEND_FN( locale_get_display_script ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) ZEND_FENTRY( getDisplayRegion, ZEND_FN( locale_get_display_region ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) ZEND_FENTRY( getDisplayName, ZEND_FN( locale_get_display_name ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) ZEND_FENTRY( getDisplayLanguage, ZEND_FN( locale_get_display_language ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) ZEND_FENTRY( getDisplayVariant, ZEND_FN( locale_get_display_variant ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) - ZEND_FENTRY( composeLocale, ZEND_FN( locale_compose ), locale_1_arg , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) - ZEND_FENTRY( parseLocale, ZEND_FN( locale_parse ), locale_1_arg , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) - ZEND_FENTRY( getAllVariants, ZEND_FN( locale_get_all_variants ), locale_1_arg , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) - ZEND_FENTRY( filterMatches, ZEND_FN( locale_filter_matches ), locale_3_args, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) - ZEND_FENTRY( lookup, ZEND_FN( locale_lookup ), locale_4_args, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) - ZEND_FENTRY( canonicalize, ZEND_FN( locale_canonicalize ), locale_1_arg , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) - ZEND_FENTRY( acceptFromHttp, ZEND_FN( locale_accept_from_http ), locale_1_arg , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) + ZEND_FENTRY( composeLocale, ZEND_FN( locale_compose ), locale_compose_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) + ZEND_FENTRY( parseLocale, ZEND_FN( locale_parse ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) + ZEND_FENTRY( getAllVariants, ZEND_FN( locale_get_all_variants ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) + ZEND_FENTRY( filterMatches, ZEND_FN( locale_filter_matches ), locale_filter_matches_args, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) + ZEND_FENTRY( lookup, ZEND_FN( locale_lookup ), locale_lookup_args, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) + ZEND_FENTRY( canonicalize, ZEND_FN( locale_canonicalize ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) + ZEND_FENTRY( acceptFromHttp, ZEND_FN( locale_accept_from_http ), locale_accept_from_http_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC ) PHP_FE_END }; /* }}} */ diff --git a/ext/intl/tests/locale_bug74439.phpt b/ext/intl/tests/locale_bug74439.phpt new file mode 100644 index 0000000..24407ad --- /dev/null +++ b/ext/intl/tests/locale_bug74439.phpt @@ -0,0 +1,54 @@ +--TEST-- +Bug #74439 Wrong reflection on the Locale methods +--SKIPIF-- +<?php if (!extension_loaded('intl')) die('skip intl extension not available'); ?> +--FILE-- +<?php + +$methods = [ +'getDefault', +'acceptFromHttp', +'canonicalize', +'composeLocale', +'getAllVariants', +'getKeywords', +'getPrimaryLanguage', +'getRegion', +'getScript', +'parseLocale', +'setDefault', +'getDisplayLanguage', +'getDisplayName', +'getDisplayRegion', +'getDisplayScript', +'getDisplayVariant', +'filterMatches', +'lookup', +]; + +foreach ($methods as $method) { + $rm = new ReflectionMethod(Locale::class, $method); + printf("%s: %d, %d\n", $method, $rm->getNumberOfParameters(), $rm->getNumberOfRequiredParameters()); +} +?> +===DONE=== +--EXPECT-- +getDefault: 0, 0 +acceptFromHttp: 1, 1 +canonicalize: 1, 1 +composeLocale: 1, 1 +getAllVariants: 1, 1 +getKeywords: 1, 1 +getPrimaryLanguage: 1, 1 +getRegion: 1, 1 +getScript: 1, 1 +parseLocale: 1, 1 +setDefault: 1, 1 +getDisplayLanguage: 2, 1 +getDisplayName: 2, 1 +getDisplayRegion: 2, 1 +getDisplayScript: 2, 1 +getDisplayVariant: 2, 1 +filterMatches: 3, 2 +lookup: 4, 2 +===DONE===