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