summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMoriyoshi Koizumi <moriyoshi@php.net>2003-08-07 19:45:26 +0000
committerMoriyoshi Koizumi <moriyoshi@php.net>2003-08-07 19:45:26 +0000
commita12601456a4dfd585b1f5dde56e94bd48aa3bf50 (patch)
tree6087973417dcdbb8ae35301e404758c8c36df1bb
parent35ffd45c26030fd119f6cf56c77d77f9a9b5c3ca (diff)
downloadphp-git-a12601456a4dfd585b1f5dde56e94bd48aa3bf50.tar.gz
Fix wrong behaviour under ZTS that was inconsistent with non-ZTS.
# This patch really needs MFH
-rw-r--r--ext/mbstring/mbstring.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c
index 03a4c8ef90..e952eb5a0a 100644
--- a/ext/mbstring/mbstring.c
+++ b/ext/mbstring/mbstring.c
@@ -487,10 +487,29 @@ static PHP_INI_MH(OnUpdate_mbstring_language)
}
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);
+ 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 {
return FAILURE;