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===
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.