diff options
| author | Moriyoshi Koizumi <moriyoshi@php.net> | 2003-08-07 19:45:26 +0000 |
|---|---|---|
| committer | Moriyoshi Koizumi <moriyoshi@php.net> | 2003-08-07 19:45:26 +0000 |
| commit | a12601456a4dfd585b1f5dde56e94bd48aa3bf50 (patch) | |
| tree | 6087973417dcdbb8ae35301e404758c8c36df1bb | |
| parent | 35ffd45c26030fd119f6cf56c77d77f9a9b5c3ca (diff) | |
| download | php-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.c | 27 |
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; |
