moriyoshi Sat Aug 9 02:12:41 2003 EDT Modified files: (Branch: PHP_4_3) /php-src/ext/mbstring mbstring.c Log: MFH(r-1.186): fix wrong behaviour under ZTS that was inconsistent with the behaviour under non-ZTS Index: php-src/ext/mbstring/mbstring.c diff -u php-src/ext/mbstring/mbstring.c:1.142.2.22 php-src/ext/mbstring/mbstring.c:1.142.2.23 --- php-src/ext/mbstring/mbstring.c:1.142.2.22 Wed Aug 6 17:59:42 2003 +++ php-src/ext/mbstring/mbstring.c Sat Aug 9 02:12:41 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mbstring.c,v 1.142.2.22 2003/08/06 21:59:42 moriyoshi Exp $ */ +/* $Id: mbstring.c,v 1.142.2.23 2003/08/09 06:12:41 moriyoshi Exp $ */ /* * PHP4 Multibyte String module "mbstring" @@ -516,48 +516,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) { - zend_alter_ini_entry("mbstring.internal_encoding", - sizeof("mbstring.internal_encoding"), - default_enc, strlen(default_enc), - PHP_INI_PERDIR, stage); - } - } else { + if (no_language == mbfl_no_language_invalid) { return FAILURE; } + MBSTRG(language) = no_language; return SUCCESS; } /* }}} */ @@ -626,6 +590,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) { @@ -723,7 +690,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 */ @@ -743,7 +710,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; @@ -878,6 +845,44 @@ const struct mb_overload_def *p; MBSTRG(current_language) = MBSTRG(language); + + if (MBSTRG(internal_encoding) == mbfl_no_encoding_invalid) { + 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; + } + if (default_enc) { + 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