com php-src: Another fix for bug #69267: ext/mbstring/php_uni code.c ext/mbstring/tests/bug69267.phpt
| From: | Nikita Popov | Date: | Sun, 23 Jul 2017 13:07:02 +0000 |
| Subject: | com php-src: Another fix for bug #69267: ext/mbstring/php_uni code.c ext/mbstring/tests/bug69267.phpt | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-98750@lists.php.net to get a copy of this message | ||
Commit: c0bcd301d3661c6e2efeae1fdc823406114f6430
Author: Nikita Popov <nikita.ppv@gmail.com> Sun, 23 Jul 2017 15:00:26 +0200
Parents: 0e4af9192f03fcfaa38454dbb3ffd8924bb26375
Branches: PHP-7.2 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=c0bcd301d3661c6e2efeae1fdc823406114f6430
Log:
Another fix for bug #69267
mb_strtoupper() was converting lowercase characters into
titlecase characters, instead of uppercase characters. Luckily
there are only very few characters with a distinct titlecase
representation, so this mostly worked out okay...
Bugs:
https://bugs.php.net/69267
Changed paths:
M ext/mbstring/php_unicode.c
M ext/mbstring/tests/bug69267.phpt
Diff:
diff --git a/ext/mbstring/php_unicode.c b/ext/mbstring/php_unicode.c
index 9771289..485988f 100644
--- a/ext/mbstring/php_unicode.c
+++ b/ext/mbstring/php_unicode.c
@@ -173,7 +173,7 @@ MBSTRING_API unsigned long php_unicode_toupper(unsigned long code, enum mbfl_no_
/*
* The character is lower case.
*/
- field = 2;
+ field = 1;
l = _uccase_len[0];
r = (l + _uccase_len[1]) - 1;
diff --git a/ext/mbstring/tests/bug69267.phpt b/ext/mbstring/tests/bug69267.phpt
index c00e5e1..8d42941 100644
--- a/ext/mbstring/tests/bug69267.phpt
+++ b/ext/mbstring/tests/bug69267.phpt
@@ -2,8 +2,26 @@
Bug #69267: mb_strtolower fails on titlecase characters
--FILE--
<?php
-$str = "DžLjNjDz";
-var_dump(mb_strtolower($str));
+$str_l = "džljnjdz";
+$str_u = "DŽLJNJDZ";
+$str_t = "DžLjNjDz";
+var_dump(mb_strtolower($str_l));
+var_dump(mb_strtolower($str_u));
+var_dump(mb_strtolower($str_t));
+var_dump(mb_strtoupper($str_l));
+var_dump(mb_strtoupper($str_u));
+var_dump(mb_strtoupper($str_t));
+var_dump(mb_convert_case($str_l, MB_CASE_TITLE));
+var_dump(mb_convert_case($str_u, MB_CASE_TITLE));
+var_dump(mb_convert_case($str_t, MB_CASE_TITLE));
?>
--EXPECT--
string(8) "džljnjdz"
+string(8) "džljnjdz"
+string(8) "džljnjdz"
+string(8) "DŽLJNJDZ"
+string(8) "DŽLJNJDZ"
+string(8) "DŽLJNJDZ"
+string(8) "Džljnjdz"
+string(8) "Džljnjdz"
+string(8) "Džljnjdz"