diff options
| author | Dmitry Stogov <dmitry@php.net> | 2010-07-05 12:03:08 +0000 |
|---|---|---|
| committer | Dmitry Stogov <dmitry@php.net> | 2010-07-05 12:03:08 +0000 |
| commit | b65f1dae41557346ee250342e248f3dd5f68c4e9 (patch) | |
| tree | f6ac69bb9d39bd19cccf59f52121020bd5750d8d /ext | |
| parent | ab67865d2100a82c53c9de302da87666ba314145 (diff) | |
| download | php-git-b65f1dae41557346ee250342e248f3dd5f68c4e9.tar.gz | |
Reduced overhead of ext/mbstring initialization
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/mbstring/mbstring.c | 42 | ||||
| -rw-r--r-- | ext/mbstring/php_mbregex.c | 2 |
2 files changed, 14 insertions, 30 deletions
diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index 982c20179f..97eaf66eb3 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -1051,58 +1051,42 @@ static PHP_INI_MH(OnUpdate_mbstring_http_output) int _php_mb_ini_mbstring_internal_encoding_set(const char *new_value, uint new_value_length TSRMLS_DC) { enum mbfl_no_encoding no_encoding; - const char *enc_name = NULL; - uint enc_name_len = 0; - no_encoding = new_value ? mbfl_name2no_encoding(new_value): - mbfl_no_encoding_invalid; - if (no_encoding != mbfl_no_encoding_invalid) { - enc_name = new_value; - enc_name_len = new_value_length; - } else { + if (!new_value + || !*new_value + || (no_encoding = mbfl_name2no_encoding(new_value)) == mbfl_no_encoding_invalid) { switch (MBSTRG(language)) { case mbfl_no_language_uni: - enc_name = "UTF-8"; - enc_name_len = sizeof("UTF-8") - 1; + no_encoding = mbfl_no_encoding_utf8; break; case mbfl_no_language_japanese: - enc_name = "EUC-JP"; - enc_name_len = sizeof("EUC-JP") - 1; + no_encoding = mbfl_no_encoding_euc_jp; break; case mbfl_no_language_korean: - enc_name = "EUC-KR"; - enc_name_len = sizeof("EUC-KR") - 1; + no_encoding = mbfl_no_encoding_euc_kr; break; case mbfl_no_language_simplified_chinese: - enc_name = "EUC-CN"; - enc_name_len = sizeof("EUC-CN") - 1; + no_encoding = mbfl_no_encoding_euc_cn; break; case mbfl_no_language_traditional_chinese: - enc_name = "EUC-TW"; - enc_name_len = sizeof("EUC-TW") - 1; + no_encoding = mbfl_no_encoding_euc_tw; break; case mbfl_no_language_russian: - enc_name = "KOI8-R"; - enc_name_len = sizeof("KOI8-R") - 1; + no_encoding = mbfl_no_encoding_koi8r; break; case mbfl_no_language_german: - enc_name = "ISO-8859-15"; - enc_name_len = sizeof("ISO-8859-15") - 1; + no_encoding = mbfl_no_encoding_8859_15; break; case mbfl_no_language_armenian: - enc_name = "ArmSCII-8"; - enc_name_len = sizeof("ArmSCII-8") - 1; + no_encoding = mbfl_no_encoding_armscii8; break; case mbfl_no_language_turkish: - enc_name = "ISO-8859-9"; - enc_name_len = sizeof("ISO-8859-9") - 1; + no_encoding = mbfl_no_encoding_8859_9; break; default: - enc_name = "ISO-8859-1"; - enc_name_len = sizeof("ISO-8859-1") - 1; + no_encoding = mbfl_no_encoding_8859_1; break; } - no_encoding = mbfl_name2no_encoding(enc_name); } MBSTRG(internal_encoding) = no_encoding; MBSTRG(current_internal_encoding) = no_encoding; diff --git a/ext/mbstring/php_mbregex.c b/ext/mbstring/php_mbregex.c index 74991051f0..c0b48e74d9 100644 --- a/ext/mbstring/php_mbregex.c +++ b/ext/mbstring/php_mbregex.c @@ -372,7 +372,7 @@ static OnigEncoding _php_mb_regex_name2mbctype(const char *pname) const char *p; php_mb_regex_enc_name_map_t *mapping; - if (pname == NULL) { + if (pname == NULL || !*pname) { return ONIG_ENCODING_UNDEF; } |
