From: Dmitry Stogov Date: Mon, 5 Jul 2010 12:03:08 +0000 (+0000) Subject: Reduced overhead of ext/mbstring initialization X-Git-Tag: php-5.4.0alpha1~191^2~1214 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b65f1dae41557346ee250342e248f3dd5f68c4e9;p=php Reduced overhead of ext/mbstring initialization --- 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; }