summaryrefslogtreecommitdiff
path: root/ext/mbstring/php_unicode.c
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2017-07-19 23:50:14 +0200
committerNikita Popov <nikita.ppv@gmail.com>2017-07-19 23:59:42 +0200
commit9c73be898d4e5aa2e64b21da14797ec9ad202134 (patch)
tree0a476d521fa9a57a9e9c023e77224b1c838e4d4b /ext/mbstring/php_unicode.c
parent4128746b949355f588143ef18ad98fdfda089873 (diff)
downloadphp-git-9c73be898d4e5aa2e64b21da14797ec9ad202134.tar.gz
Directly accept encoding in php_unicode_convert_case()
As a side-effect mb_strtolower() and mb_strtoupper() now correctly handle a NULL encoding parameter by using the internal encoding. This is what caused the two test changes.
Diffstat (limited to 'ext/mbstring/php_unicode.c')
-rw-r--r--ext/mbstring/php_unicode.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/ext/mbstring/php_unicode.c b/ext/mbstring/php_unicode.c
index 490a985f90..5d6ccbfdd5 100644
--- a/ext/mbstring/php_unicode.c
+++ b/ext/mbstring/php_unicode.c
@@ -274,22 +274,15 @@ MBSTRING_API unsigned long php_unicode_totitle(unsigned long code, enum mbfl_no_
((unsigned char*)(ptr))[3] = (v ) & 0xff;\
}
-MBSTRING_API char *php_unicode_convert_case(int case_mode, const char *srcstr, size_t srclen, size_t *ret_len,
- const char *src_encoding_name)
+MBSTRING_API char *php_unicode_convert_case(
+ int case_mode, const char *srcstr, size_t srclen, size_t *ret_len,
+ const mbfl_encoding *src_encoding)
{
char *unicode, *newstr;
size_t unicode_len;
unsigned char *unicode_ptr;
size_t i;
- enum mbfl_no_encoding src_no_encoding;
-
- const mbfl_encoding *src_encoding = mbfl_name2encoding(src_encoding_name);
- if (!src_encoding) {
- php_error_docref(NULL, E_WARNING, "Unknown encoding \"%s\"", src_encoding_name);
- return NULL;
- }
-
- src_no_encoding = src_encoding->no_encoding;
+ enum mbfl_no_encoding src_no_encoding = src_encoding->no_encoding;
unicode = php_mb_convert_encoding_ex(srcstr, srclen, &mbfl_encoding_ucs4be, src_encoding, &unicode_len);
if (unicode == NULL)