diff options
Diffstat (limited to 'ext/mbstring/mbstring.c')
-rw-r--r-- | ext/mbstring/mbstring.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index bc59fb86a6..18110ca030 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -73,6 +73,10 @@ #include "mb_gpc.h" +#if HAVE_MBREGEX +#include "php_mbregex.h" +#endif + #ifdef ZEND_MULTIBYTE #include "zend_multibyte.h" #endif /* ZEND_MULTIBYTE */ @@ -89,7 +93,7 @@ static PHP_GSHUTDOWN_FUNCTION(mbstring); /* {{{ php_mb_default_identify_list */ typedef struct _php_mb_nls_ident_list { enum mbfl_no_language lang; - enum mbfl_no_encoding* list; + const enum mbfl_no_encoding* list; int list_size; } php_mb_nls_ident_list; @@ -906,7 +910,7 @@ static int php_mb_nls_get_default_detect_order_list(enum mbfl_no_language lang, for (i = 0; i < sizeof(php_mb_default_identify_list) / sizeof(php_mb_default_identify_list[0]); i++) { if (php_mb_default_identify_list[i].lang == lang) { - *plist = php_mb_default_identify_list[i].list; + *plist = (enum mbfl_no_encoding *)php_mb_default_identify_list[i].list; *plist_size = php_mb_default_identify_list[i].list_size; return 1; } @@ -1003,12 +1007,13 @@ static PHP_INI_MH(OnUpdate_mbstring_internal_encoding) MBSTRG(current_internal_encoding) = no_encoding; #if HAVE_MBREGEX { - OnigEncoding mbctype; - mbctype = php_mb_regex_name2mbctype(new_value); - if (mbctype == ONIG_ENCODING_UNDEF) { - mbctype = ONIG_ENCODING_EUC_JP; - } - MBSTRG(current_mbctype) = MBSTRG(default_mbctype) = mbctype; + const char *enc_name = new_value; + if (FAILURE == php_mb_regex_set_default_mbctype(enc_name)) { + /* falls back to EUC-JP if an unknown encoding name is given */ + enc_name = "EUC-JP"; + php_mb_regex_set_default_mbctype(enc_name); + } + php_mb_regex_set_mbctype(new_value); } #endif #ifdef ZEND_MULTIBYTE @@ -1159,7 +1164,7 @@ static PHP_GINIT_FUNCTION(mbstring) mbstring_globals->strict_detection = 0; mbstring_globals->outconv = NULL; #if HAVE_MBREGEX - _php_mb_regex_globals_ctor(mbstring_globals TSRMLS_CC); + mbstring_globals->mb_regex_globals = php_mb_regex_globals_alloc(TSRMLS_C); #endif } /* }}} */ @@ -1168,7 +1173,7 @@ static PHP_GINIT_FUNCTION(mbstring) static PHP_GSHUTDOWN_FUNCTION(mbstring) { #if HAVE_MBREGEX - _php_mb_regex_globals_dtor(mbstring_globals TSRMLS_CC); + php_mb_regex_globals_free(mbstring_globals->mb_regex_globals TSRMLS_CC); #endif } /* }}} */ |