moriyoshi               Fri Aug  8 05:40:59 2003 EDT

  Modified files:              
    /php-src/ext/mbstring       mbstring.c 
  Log:
  Real fix for the problem addressed in the last commit message.
  
  
Index: php-src/ext/mbstring/mbstring.c
diff -u php-src/ext/mbstring/mbstring.c:1.184 php-src/ext/mbstring/mbstring.c:1.185
--- php-src/ext/mbstring/mbstring.c:1.184       Thu Aug  7 15:45:26 2003
+++ php-src/ext/mbstring/mbstring.c     Fri Aug  8 05:40:58 2003
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: mbstring.c,v 1.184 2003/08/07 19:45:26 moriyoshi Exp $ */
+/* $Id: mbstring.c,v 1.185 2003/08/08 09:40:58 moriyoshi Exp $ */
 
 /*
  * PHP4 Multibyte String module "mbstring"
@@ -453,67 +453,12 @@
 static PHP_INI_MH(OnUpdate_mbstring_language)
 {
        enum mbfl_no_language no_language;
-       char *default_enc = NULL;
 
        no_language = mbfl_name2no_language(new_value);
-       if (no_language != mbfl_no_language_invalid) {
-               MBSTRG(language) = no_language;
-               switch (no_language) {
-               case mbfl_no_language_uni:
-                       default_enc = "UTF-8";
-                       break;
-               case mbfl_no_language_japanese:
-                       default_enc = "EUC-JP";
-                       break;
-               case mbfl_no_language_korean:
-                       default_enc = "EUC-KR";
-                       break;
-               case mbfl_no_language_simplified_chinese:
-                       default_enc = "EUC-CN";
-                       break;
-               case mbfl_no_language_traditional_chinese:
-                       default_enc = "EUC-TW";
-                       break;
-               case mbfl_no_language_russian:
-                       default_enc = "KOI8-R";
-                       break;
-               case mbfl_no_language_german:
-                       default_enc = "ISO-8859-15";
-                       break;
-               case mbfl_no_language_english:
-               default:
-                       default_enc = "ISO-8859-1";
-                       break;
-               }
-               MBSTRG(current_language) = MBSTRG(language);
-               if (default_enc) {
-                       enum mbfl_no_encoding no_encoding;
-#if HAVE_MBREGEX
-                       const struct def_mbctype_tbl *p = NULL;
-#endif
-                       no_encoding = mbfl_name2no_encoding(default_enc);
-                       if (no_encoding != mbfl_no_encoding_invalid) {
-                               MBSTRG(internal_encoding) = no_encoding;
-                               MBSTRG(current_internal_encoding) = no_encoding;
-#if HAVE_MBREGEX
-                               p=&(mbctype_tbl[0]);
-                               while (p->regex_encoding >= 0){
-                                       if (p->mbfl_encoding == 
MBSTRG(internal_encoding)){
-                                               MBSTRG(default_mbctype) = 
p->regex_encoding;
-                                               MBSTRG(current_mbctype) = 
p->regex_encoding;
-                                               break;
-                                       }
-                                       p++;
-                               }
-#endif
-#ifdef ZEND_MULTIBYTE
-                               zend_multibyte_set_internal_encoding(new_value, 
new_value_length TSRMLS_CC);
-#endif /* ZEND_MULTIBYTE */
-                       }
-               }
-       } else {
+       if (no_language == mbfl_no_language_invalid) {
                return FAILURE;
        }
+       MBSTRG(language) = no_language;
        return SUCCESS;
 }
 /* }}} */
@@ -582,6 +527,9 @@
 #if HAVE_MBREGEX
        const struct def_mbctype_tbl *p = NULL;
 #endif
+       if (new_value == NULL) {
+               return SUCCESS;
+       }
 
        no_encoding = mbfl_name2no_encoding(new_value);
        if (no_encoding != mbfl_no_encoding_invalid) {
@@ -675,7 +623,7 @@
         PHP_INI_ENTRY("mbstring.detect_order", NULL, PHP_INI_ALL, 
OnUpdate_mbstring_detect_order)
         PHP_INI_ENTRY("mbstring.http_input", "pass", PHP_INI_ALL, 
OnUpdate_mbstring_http_input)
         PHP_INI_ENTRY("mbstring.http_output", "pass", PHP_INI_ALL, 
OnUpdate_mbstring_http_output)
-        PHP_INI_ENTRY("mbstring.internal_encoding", "none", PHP_INI_ALL, 
OnUpdate_mbstring_internal_encoding)
+        PHP_INI_ENTRY("mbstring.internal_encoding", NULL, PHP_INI_ALL, 
OnUpdate_mbstring_internal_encoding)
 #ifdef ZEND_MULTIBYTE
         PHP_INI_ENTRY("mbstring.script_encoding", NULL, PHP_INI_ALL, 
OnUpdate_mbstring_script_encoding)
 #endif /* ZEND_MULTIBYTE */
@@ -694,7 +642,7 @@
 {
        MBSTRG(language) = mbfl_no_language_uni;
        MBSTRG(current_language) = MBSTRG(language);
-       MBSTRG(internal_encoding) = mbfl_no_encoding_pass;
+       MBSTRG(internal_encoding) = mbfl_no_encoding_invalid;
        MBSTRG(current_internal_encoding) = MBSTRG(internal_encoding);
 #ifdef ZEND_MULTIBYTE
        MBSTRG(script_encoding_list) = NULL;
@@ -810,6 +758,45 @@
        const struct mb_overload_def *p;
 
        MBSTRG(current_language) = MBSTRG(language);
+
+       {
+               char *default_enc = NULL;
+               switch (MBSTRG(current_language)) {
+                       case mbfl_no_language_uni:
+                               default_enc = "UTF-8";
+                               break;
+                       case mbfl_no_language_japanese:
+                               default_enc = "EUC-JP";
+                               break;
+                       case mbfl_no_language_korean:
+                               default_enc = "EUC-KR";
+                               break;
+                       case mbfl_no_language_simplified_chinese:
+                               default_enc = "EUC-CN";
+                               break;
+                       case mbfl_no_language_traditional_chinese:
+                               default_enc = "EUC-TW";
+                               break;
+                       case mbfl_no_language_russian:
+                               default_enc = "KOI8-R";
+                               break;
+                       case mbfl_no_language_german:
+                               default_enc = "ISO-8859-15";
+                               break;
+                       case mbfl_no_language_english:
+                       default:
+                               default_enc = "ISO-8859-1";
+                               break;
+               }
+               MBSTRG(current_language) = MBSTRG(language);
+               if (default_enc && MBSTRG(internal_encoding) == 
mbfl_no_encoding_invalid) {
+                       zend_alter_ini_entry("mbstring.internal_encoding",
+                                            sizeof("mbstring.internal_encoding"),
+                                            default_enc, strlen(default_enc),
+                                            PHP_INI_PERDIR, PHP_INI_STAGE_RUNTIME); 
+               }
+       }
+
        MBSTRG(current_internal_encoding) = MBSTRG(internal_encoding);
        MBSTRG(current_http_output_encoding) = MBSTRG(http_output_encoding);
        MBSTRG(current_filter_illegal_mode) = MBSTRG(filter_illegal_mode);



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to