diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2017-07-19 23:50:14 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2017-07-19 23:59:42 +0200 |
commit | 9c73be898d4e5aa2e64b21da14797ec9ad202134 (patch) | |
tree | 0a476d521fa9a57a9e9c023e77224b1c838e4d4b /ext/mbstring/php_unicode.c | |
parent | 4128746b949355f588143ef18ad98fdfda089873 (diff) | |
download | php-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.c | 15 |
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) |