moriyoshi               Sun Aug  3 00:04:30 2008 UTC

  Modified files:              (Branch: PHP_5_2)
    /php-src/ext/mbstring       mbstring.c 
  Log:
  - MFH:Forgot to take account of the case when mbstring.language is processed
    afterwards.
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/mbstring/mbstring.c?r1=1.224.2.22.2.35&r2=1.224.2.22.2.36&diff_format=u
Index: php-src/ext/mbstring/mbstring.c
diff -u php-src/ext/mbstring/mbstring.c:1.224.2.22.2.35 
php-src/ext/mbstring/mbstring.c:1.224.2.22.2.36
--- php-src/ext/mbstring/mbstring.c:1.224.2.22.2.35     Sat Aug  2 20:49:47 2008
+++ php-src/ext/mbstring/mbstring.c     Sun Aug  3 00:04:30 2008
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: mbstring.c,v 1.224.2.22.2.35 2008/08/02 20:49:47 moriyoshi Exp $ */
+/* $Id: mbstring.c,v 1.224.2.22.2.36 2008/08/03 00:04:30 moriyoshi Exp $ */
 
 /*
  * PHP 4 Multibyte String module "mbstring"
@@ -655,8 +655,8 @@
 }
 /* }}} */
 
-/* {{{ static PHP_INI_MH(OnUpdate_mbstring_internal_encoding) */
-static PHP_INI_MH(OnUpdate_mbstring_internal_encoding)
+/* {{{ static _php_mb_ini_mbstring_internal_encoding_set */
+static 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;
@@ -732,6 +732,23 @@
 }
 /* }}} */
 
+/* {{{ static PHP_INI_MH(OnUpdate_mbstring_internal_encoding) */
+static PHP_INI_MH(OnUpdate_mbstring_internal_encoding)
+{
+       if (stage == PHP_INI_STAGE_STARTUP || stage == PHP_INI_STAGE_SHUTDOWN) {
+               return _php_mb_ini_mbstring_internal_encoding_set(new_value, 
new_value_length TSRMLS_CC);
+       } else {
+               // the corresponding mbstring globals needs to be set according 
to the
+               // ini value in the later stage because it never falls back to 
the
+               // default value if 1. no value for mbstring.internal_encoding 
is given,
+               // 2. mbstring.language directive is processed in per-dir or 
runtime
+               // context and 3. call to the handler for mbstring.language is 
done
+               // after mbstring.internal_encoding is handled.
+               return SUCCESS;
+       }
+}
+/* }}} */
+
 #ifdef ZEND_MULTIBYTE
 /* {{{ static PHP_INI_MH(OnUpdate_mbstring_script_encoding) */
 static PHP_INI_MH(OnUpdate_mbstring_script_encoding)
@@ -945,8 +962,10 @@
        zend_function *func, *orig;
        const struct mb_overload_def *p;
 
-       php_mb_nls_get_default_detect_order_list(MBSTRG(language), 
-        &MBSTRG(default_detect_order_list), 
&MBSTRG(default_detect_order_list_size));
+       {
+               char *value = zend_ini_string("mbstring.internal_encoding", 
sizeof("mbstring.internal_encoding"), 0);
+               _php_mb_ini_mbstring_internal_encoding_set(value, value ? 
strlen(value): 0 TSRMLS_CC);
+       }
 
        MBSTRG(current_internal_encoding) = MBSTRG(internal_encoding);
        MBSTRG(current_http_output_encoding) = MBSTRG(http_output_encoding);



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

Reply via email to