]> granicus.if.org Git - php/commitdiff
Fix wrong behaviour under ZTS that was inconsistent with non-ZTS.
authorMoriyoshi Koizumi <moriyoshi@php.net>
Thu, 7 Aug 2003 19:45:26 +0000 (19:45 +0000)
committerMoriyoshi Koizumi <moriyoshi@php.net>
Thu, 7 Aug 2003 19:45:26 +0000 (19:45 +0000)
# This patch really needs MFH

ext/mbstring/mbstring.c

index 03a4c8ef90f57502d774fd2baef8f7453e37ac3a..e952eb5a0adbddcd18d271aecd17ffb22bd44db7 100644 (file)
@@ -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;