From: Moriyoshi Koizumi Date: Sat, 9 Aug 2003 06:12:41 +0000 (+0000) Subject: MFH(r-1.186): fix wrong behaviour under ZTS that was inconsistent with the X-Git-Tag: php-4.3.3RC4~76 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b2a7d2ed4e12c89f33cd310e1de0c9370270eccd;p=php MFH(r-1.186): fix wrong behaviour under ZTS that was inconsistent with the behaviour under non-ZTS --- diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index 8b65955bcf..010e6855d3 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -516,48 +516,12 @@ php_mbregex_free_cache(mb_regex_t *pre) 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 @@ static PHP_INI_MH(OnUpdate_mbstring_internal_encoding) #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_BEGIN() 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 @@ php_mb_init_globals(zend_mbstring_globals *pglobals TSRMLS_DC) { 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 @@ PHP_RINIT_FUNCTION(mbstring) 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);