Browse Source

- MFH:Forgot to take account of the case when mbstring.language is processed

afterwards.
PHP-5.2.1RC1
Moriyoshi Koizumi 18 years ago
parent
commit
cf4e80bd50
  1. 27
      ext/mbstring/mbstring.c

27
ext/mbstring/mbstring.c

@ -655,8 +655,8 @@ static PHP_INI_MH(OnUpdate_mbstring_http_output)
}
/* }}} */
/* {{{ static PHP_INI_MH(OnUpdate_mbstring_internal_encoding) */
static PHP_INI_MH(OnUpdate_mbstring_internal_encoding)
/* {{{ static _php_mb_ini_mbstring_internal_encoding_set */
static int _php_mb_ini_mbstring_internal_encoding_set(const char *new_value, uint new_value_length TSRMLS_DC)
{
enum mbfl_no_encoding no_encoding;
const char *enc_name = NULL;
@ -732,6 +732,23 @@ static PHP_INI_MH(OnUpdate_mbstring_internal_encoding)
}
/* }}} */
/* {{{ static PHP_INI_MH(OnUpdate_mbstring_internal_encoding) */
static PHP_INI_MH(OnUpdate_mbstring_internal_encoding)
{
if (stage == PHP_INI_STAGE_STARTUP || stage == PHP_INI_STAGE_SHUTDOWN) {
return _php_mb_ini_mbstring_internal_encoding_set(new_value, new_value_length TSRMLS_CC);
} else {
// the corresponding mbstring globals needs to be set according to the
// ini value in the later stage because it never falls back to the
// default value if 1. no value for mbstring.internal_encoding is given,
// 2. mbstring.language directive is processed in per-dir or runtime
// context and 3. call to the handler for mbstring.language is done
// after mbstring.internal_encoding is handled.
return SUCCESS;
}
}
/* }}} */
#ifdef ZEND_MULTIBYTE
/* {{{ static PHP_INI_MH(OnUpdate_mbstring_script_encoding) */
static PHP_INI_MH(OnUpdate_mbstring_script_encoding)
@ -945,8 +962,10 @@ PHP_RINIT_FUNCTION(mbstring)
zend_function *func, *orig;
const struct mb_overload_def *p;
php_mb_nls_get_default_detect_order_list(MBSTRG(language),
&MBSTRG(default_detect_order_list), &MBSTRG(default_detect_order_list_size));
{
char *value = zend_ini_string("mbstring.internal_encoding", sizeof("mbstring.internal_encoding"), 0);
_php_mb_ini_mbstring_internal_encoding_set(value, value ? strlen(value): 0 TSRMLS_CC);
}
MBSTRG(current_internal_encoding) = MBSTRG(internal_encoding);
MBSTRG(current_http_output_encoding) = MBSTRG(http_output_encoding);

Loading…
Cancel
Save