]> granicus.if.org Git - php/commitdiff
Reduced overhead of ext/mbstring initialization
authorDmitry Stogov <dmitry@php.net>
Mon, 5 Jul 2010 12:03:08 +0000 (12:03 +0000)
committerDmitry Stogov <dmitry@php.net>
Mon, 5 Jul 2010 12:03:08 +0000 (12:03 +0000)
ext/mbstring/mbstring.c
ext/mbstring/php_mbregex.c

index 982c20179fa1ff7ea05412da02d9815a6bceb531..97eaf66eb39372490f0664e8953a3de9064178ce 100644 (file)
@@ -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;
index 74991051f08758dc6bb265bbb9d1ead65dc8e115..c0b48e74d92298bb19d4c1649e08dd6b19a0193d 100644 (file)
@@ -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;
        }