From f015f9b1fd3199d2ce47f722f1def3cd0dd170ff Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Thu, 7 May 2020 16:53:44 +0200 Subject: [PATCH] Remove deprecated MBString INI settings --- ext/mbstring/mbstring.c | 166 +++++------------- ext/mbstring/tests/bug48697.phpt | 16 +- ext/mbstring/tests/ini_encoding.phpt | 22 --- ext/mbstring/tests/ini_encoding2.phpt | 22 --- ext/mbstring/tests/ini_mbstring_invalid.phpt | 18 -- ext/mbstring/tests/internal_encoding.phpt | 32 +--- ext/mbstring/tests/mb_get_info.phpt | 15 +- .../tests/mb_internal_encoding_basic2.phpt | 6 - .../mb_internal_encoding_ini_basic2.phpt | 30 ---- ...nternal_encoding_ini_invalid_encoding.phpt | 18 +- .../tests/strings/htmlentities25.phpt | 21 --- 11 files changed, 57 insertions(+), 309 deletions(-) delete mode 100644 ext/mbstring/tests/mb_internal_encoding_ini_basic2.phpt delete mode 100644 ext/standard/tests/strings/htmlentities25.phpt diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index f68c1f3c34534..ea97d02fcf8e8 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -832,120 +832,6 @@ static PHP_INI_MH(OnUpdate_mbstring_detect_order) } /* }}} */ -static int _php_mb_ini_mbstring_http_input_set(const char *new_value, size_t new_value_length) { - const mbfl_encoding **list; - size_t size; - if (FAILURE == php_mb_parse_encoding_list(new_value, new_value_length, &list, &size, /* persistent */ 1, /* arg_num */ 0, /* allow_pass_encoding */ 1) || size == 0) { - return FAILURE; - } - if (MBSTRG(http_input_list)) { - pefree(ZEND_VOIDP(MBSTRG(http_input_list)), 1); - } - MBSTRG(http_input_list) = list; - MBSTRG(http_input_list_size) = size; - return SUCCESS; -} - -/* {{{ static PHP_INI_MH(OnUpdate_mbstring_http_input) */ -static PHP_INI_MH(OnUpdate_mbstring_http_input) -{ - if (new_value) { - php_error_docref("ref.mbstring", E_DEPRECATED, "Use of mbstring.http_input is deprecated"); - } - - if (!new_value || !ZSTR_VAL(new_value)) { - const char *encoding = php_get_input_encoding(); - MBSTRG(http_input_set) = 0; - _php_mb_ini_mbstring_http_input_set(encoding, strlen(encoding)); - return SUCCESS; - } - - MBSTRG(http_input_set) = 1; - return _php_mb_ini_mbstring_http_input_set(ZSTR_VAL(new_value), ZSTR_LEN(new_value)); -} -/* }}} */ - -static int _php_mb_ini_mbstring_http_output_set(const char *new_value) { - const mbfl_encoding *encoding = php_mb_get_encoding_or_pass(new_value); - if (!encoding) { - return FAILURE; - } - - MBSTRG(http_output_encoding) = encoding; - MBSTRG(current_http_output_encoding) = encoding; - return SUCCESS; -} - -/* {{{ static PHP_INI_MH(OnUpdate_mbstring_http_output) */ -static PHP_INI_MH(OnUpdate_mbstring_http_output) -{ - if (new_value) { - php_error_docref("ref.mbstring", E_DEPRECATED, "Use of mbstring.http_output is deprecated"); - } - - if (new_value == NULL || ZSTR_LEN(new_value) == 0) { - MBSTRG(http_output_set) = 0; - _php_mb_ini_mbstring_http_output_set(php_get_output_encoding()); - return SUCCESS; - } - - MBSTRG(http_output_set) = 1; - return _php_mb_ini_mbstring_http_output_set(ZSTR_VAL(new_value)); -} -/* }}} */ - -/* {{{ static _php_mb_ini_mbstring_internal_encoding_set */ -static int _php_mb_ini_mbstring_internal_encoding_set(const char *new_value, size_t new_value_length) -{ - const mbfl_encoding *encoding; - - if (!new_value || !new_value_length || !(encoding = mbfl_name2encoding(new_value))) { - /* falls back to UTF-8 if an unknown encoding name is given */ - if (new_value) { - php_error_docref("ref.mbstring", E_WARNING, - "Unknown encoding \"%s\" in ini setting", new_value); - } - encoding = mbfl_no2encoding(mbfl_no_encoding_utf8); - } - MBSTRG(internal_encoding) = encoding; - MBSTRG(current_internal_encoding) = encoding; -#ifdef HAVE_MBREGEX - { - const char *enc_name = new_value; - if (FAILURE == php_mb_regex_set_default_mbctype(enc_name)) { - /* falls back to UTF-8 if an unknown encoding name is given */ - enc_name = "UTF-8"; - php_mb_regex_set_default_mbctype(enc_name); - } - php_mb_regex_set_mbctype(new_value); - } -#endif - return SUCCESS; -} -/* }}} */ - -/* {{{ static PHP_INI_MH(OnUpdate_mbstring_internal_encoding) */ -static PHP_INI_MH(OnUpdate_mbstring_internal_encoding) -{ - if (new_value) { - php_error_docref("ref.mbstring", E_DEPRECATED, "Use of mbstring.internal_encoding is deprecated"); - } - - if (OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage) == FAILURE) { - return FAILURE; - } - - if (new_value && ZSTR_LEN(new_value)) { - MBSTRG(internal_encoding_set) = 1; - return _php_mb_ini_mbstring_internal_encoding_set(ZSTR_VAL(new_value), ZSTR_LEN(new_value)); - } else { - const char *encoding = php_get_internal_encoding(); - MBSTRG(internal_encoding_set) = 0; - return _php_mb_ini_mbstring_internal_encoding_set(encoding, strlen(encoding)); - } -} -/* }}} */ - /* {{{ static PHP_INI_MH(OnUpdate_mbstring_substitute_character) */ static PHP_INI_MH(OnUpdate_mbstring_substitute_character) { @@ -1039,9 +925,6 @@ static PHP_INI_MH(OnUpdate_mbstring_http_output_conv_mimetypes) PHP_INI_BEGIN() PHP_INI_ENTRY("mbstring.language", "neutral", PHP_INI_ALL, OnUpdate_mbstring_language) PHP_INI_ENTRY("mbstring.detect_order", NULL, PHP_INI_ALL, OnUpdate_mbstring_detect_order) - PHP_INI_ENTRY("mbstring.http_input", NULL, PHP_INI_ALL, OnUpdate_mbstring_http_input) - PHP_INI_ENTRY("mbstring.http_output", NULL, PHP_INI_ALL, OnUpdate_mbstring_http_output) - STD_PHP_INI_ENTRY("mbstring.internal_encoding", NULL, PHP_INI_ALL, OnUpdate_mbstring_internal_encoding, internal_encoding_name, zend_mbstring_globals, mbstring_globals) PHP_INI_ENTRY("mbstring.substitute_character", NULL, PHP_INI_ALL, OnUpdate_mbstring_substitute_character) STD_PHP_INI_BOOLEAN("mbstring.encoding_translation", "0", @@ -1066,19 +949,54 @@ PHP_INI_END() static void mbstring_internal_encoding_changed_hook(void) { /* One of the internal_encoding / input_encoding / output_encoding ini settings changed. */ + const char *php_encoding = php_get_internal_encoding(); + const mbfl_encoding *encoding; + if (!MBSTRG(internal_encoding_set)) { - const char *encoding = php_get_internal_encoding(); - _php_mb_ini_mbstring_internal_encoding_set(encoding, strlen(encoding)); + if (!(encoding = mbfl_name2encoding(php_encoding))) { + /* falls back to UTF-8 if an unknown encoding name is given */ + encoding = &mbfl_encoding_utf8; + } + MBSTRG(internal_encoding) = encoding; + MBSTRG(current_internal_encoding) = encoding; + #if HAVE_MBREGEX + { + const char *enc_name = php_encoding; + if (FAILURE == php_mb_regex_set_default_mbctype(enc_name)) { + /* falls back to UTF-8 if an unknown encoding name is given */ + enc_name = "UTF-8"; + php_mb_regex_set_default_mbctype(enc_name); + } + php_mb_regex_set_mbctype(enc_name); + } + #endif } if (!MBSTRG(http_output_set)) { - const char *encoding = php_get_output_encoding(); - _php_mb_ini_mbstring_http_output_set(encoding); + php_encoding = php_get_output_encoding(); + encoding = php_mb_get_encoding_or_pass(php_encoding); + if (!encoding) { + /* falls back to UTF-8 if an unknown encoding name is given */ + encoding = &mbfl_encoding_utf8; + } + MBSTRG(http_output_encoding) = encoding; + MBSTRG(current_http_output_encoding) = encoding; } if (!MBSTRG(http_input_set)) { - const char *encoding = php_get_input_encoding(); - _php_mb_ini_mbstring_http_input_set(encoding, strlen(encoding)); + php_encoding = php_get_input_encoding(); + const mbfl_encoding **list; + size_t size; + if (FAILURE == php_mb_parse_encoding_list(php_encoding, strlen(php_encoding), &list, &size, + /* persistent */ 1, /* arg_num */ 0, /* allow_pass_encoding */ 1) || size == 0) { + /* on failure leave as is */ + return; + } + if (MBSTRG(http_input_list)) { + pefree(ZEND_VOIDP(MBSTRG(http_input_list)), 1); + } + MBSTRG(http_input_list) = list; + MBSTRG(http_input_list_size) = size; } } @@ -1090,7 +1008,7 @@ ZEND_TSRMLS_CACHE_UPDATE(); #endif mbstring_globals->language = mbfl_no_language_uni; - mbstring_globals->internal_encoding = NULL; + mbstring_globals->internal_encoding = &mbfl_encoding_utf8; mbstring_globals->current_internal_encoding = mbstring_globals->internal_encoding; mbstring_globals->http_output_encoding = &mbfl_encoding_pass; mbstring_globals->current_http_output_encoding = &mbfl_encoding_pass; diff --git a/ext/mbstring/tests/bug48697.phpt b/ext/mbstring/tests/bug48697.phpt index 77d1c7a710276..1284206855c3e 100644 --- a/ext/mbstring/tests/bug48697.phpt +++ b/ext/mbstring/tests/bug48697.phpt @@ -4,22 +4,20 @@ Bug #48697 (mb_internal_encoding() value gets reset by parse_str() or mb_parse_s --FILE-- ---EXPECTF-- -Deprecated: ini_set(): Use of mbstring.internal_encoding is deprecated in %s on line %d -string(11) "ISO-8859-15" -string(5) "UTF-8" -string(5) "UTF-8" -string(5) "UTF-8" +--EXPECT-- string(5) "UTF-8" +string(11) "ISO-8859-15" +string(11) "ISO-8859-15" +string(11) "ISO-8859-15" +string(11) "ISO-8859-15" diff --git a/ext/mbstring/tests/ini_encoding.phpt b/ext/mbstring/tests/ini_encoding.phpt index 4d65c3c5d98fa..248a6aff3254d 100644 --- a/ext/mbstring/tests/ini_encoding.phpt +++ b/ext/mbstring/tests/ini_encoding.phpt @@ -3,14 +3,10 @@ Encoding INI test --SKIPIF-- --INI-- -error_reporting=E_ALL & ~E_DEPRECATED default_charset=Shift_JIS internal_encoding= input_encoding= output_encoding= -mbstring.internal_encoding=Shift_JIS -mbstring.http_input=Shift_JIS -mbstring.http_output=Shift_JIS --FILE-- --INI-- -error_reporting=E_ALL & ~E_DEPRECATED default_charset= internal_encoding=EUC-JP input_encoding= output_encoding= -mbstring.internal_encoding= -mbstring.http_input= -mbstring.http_output= --FILE-- --INI-- mbstring.language=UNKNOWN_LANGUAGE -mbstring.internal_encoding=UNKNOWN_ENCODING mbstring.detect_order=UTF-8,DETECT_ORDER,ASCII -mbstring.http_input=UTF-8,HTTP_INPUT,ASCII -mbstring.http_output=HTTP_OUTPUT mbstring.http_output_conv_mimetypes=UNKNOWN_MIME_TYPE_OUTPUT mbstring.substitute_character=U+3000,NON_EXISTING_CHARACTER,JIS+7E7E mbstring.func_overload=BOOL_OVERLOAD @@ -19,20 +16,5 @@ mbstring.strict_detection=BOOL_STRICT_DETECTION ?> --EXPECT-- PHP Warning: PHP Startup: INI setting contains invalid encoding "DETECT_ORDER" in Unknown on line 0 -PHP Deprecated: PHP Startup: Use of mbstring.http_input is deprecated in Unknown on line 0 -PHP Warning: PHP Startup: INI setting contains invalid encoding "HTTP_INPUT" in Unknown on line 0 -PHP Deprecated: PHP Startup: Use of mbstring.http_output is deprecated in Unknown on line 0 -PHP Deprecated: PHP Startup: Use of mbstring.internal_encoding is deprecated in Unknown on line 0 -PHP Warning: PHP Startup: Unknown encoding "UNKNOWN_ENCODING" in ini setting in Unknown on line 0 Warning: PHP Startup: INI setting contains invalid encoding "DETECT_ORDER" in Unknown on line 0 - -Deprecated: PHP Startup: Use of mbstring.http_input is deprecated in Unknown on line 0 - -Warning: PHP Startup: INI setting contains invalid encoding "HTTP_INPUT" in Unknown on line 0 - -Deprecated: PHP Startup: Use of mbstring.http_output is deprecated in Unknown on line 0 - -Deprecated: PHP Startup: Use of mbstring.internal_encoding is deprecated in Unknown on line 0 - -Warning: PHP Startup: Unknown encoding "UNKNOWN_ENCODING" in ini setting in Unknown on line 0 diff --git a/ext/mbstring/tests/internal_encoding.phpt b/ext/mbstring/tests/internal_encoding.phpt index 17f38d403ce16..940d9c67b4edf 100644 --- a/ext/mbstring/tests/internal_encoding.phpt +++ b/ext/mbstring/tests/internal_encoding.phpt @@ -10,23 +10,11 @@ internal_encoding=iso-8859-1 var_dump(mb_internal_encoding()); var_dump(mb_strlen("\xc3\xb6")); -ini_set('mbstring.internal_encoding', 'utf-8'); - -var_dump(mb_internal_encoding()); -var_dump(mb_strlen("\xc3\xb6")); - -// mbstring.internal_encoding is set, this has no effect ini_set('internal_encoding', 'iso-8859-2'); var_dump(mb_internal_encoding()); var_dump(mb_strlen("\xc3\xb6")); -// mbstring.internal_encoding is unset, pick up internal_encoding again -ini_set('mbstring.internal_encoding', ''); - -var_dump(mb_internal_encoding()); -var_dump(mb_strlen("\xc3\xb6")); - mb_internal_encoding('utf-8'); var_dump(mb_internal_encoding()); @@ -38,31 +26,13 @@ ini_set('internal_encoding', 'iso-8859-3'); var_dump(mb_internal_encoding()); var_dump(mb_strlen("\xc3\xb6")); -// mbstring.internal_encoding is unset, pick up internal_encoding again -ini_set('mbstring.internal_encoding', ''); - -var_dump(mb_internal_encoding()); -var_dump(mb_strlen("\xc3\xb6")); - ?> ---EXPECTF-- +--EXPECT-- string(10) "ISO-8859-1" int(2) - -Deprecated: ini_set(): Use of mbstring.internal_encoding is deprecated in %s on line %d -string(5) "UTF-8" -int(1) -string(5) "UTF-8" -int(1) - -Deprecated: ini_set(): Use of mbstring.internal_encoding is deprecated in %s on line %d string(10) "ISO-8859-2" int(2) string(5) "UTF-8" int(1) string(5) "UTF-8" int(1) - -Deprecated: ini_set(): Use of mbstring.internal_encoding is deprecated in %s on line %d -string(10) "ISO-8859-3" -int(2) diff --git a/ext/mbstring/tests/mb_get_info.phpt b/ext/mbstring/tests/mb_get_info.phpt index f1fbfa08fec3f..cb1d5be7f07a8 100644 --- a/ext/mbstring/tests/mb_get_info.phpt +++ b/ext/mbstring/tests/mb_get_info.phpt @@ -5,9 +5,9 @@ Test mb_get_info() function --INI-- mbstring.encoding_translation=1 mbstring.language=Korean -mbstring.internal_encoding=UTF-8 -mbstring.http_input=ISO-8859-1 -mbstring.http_output=ISO-8859-15 +internal_encoding=UTF-8 +input_encoding=ISO-8859-1 +output_encoding=ISO-8859-15 mbstring.http_output_conv_mimetypes=abc mbstring.detect_order=UTF-8,ISO-8859-15,ISO-8859-1,ASCII mbstring.substitute_character=123 @@ -23,15 +23,6 @@ foreach (array_keys($result) as $key) { } ?> --EXPECT-- -PHP Deprecated: PHP Startup: Use of mbstring.http_input is deprecated in Unknown on line 0 -PHP Deprecated: PHP Startup: Use of mbstring.http_output is deprecated in Unknown on line 0 -PHP Deprecated: PHP Startup: Use of mbstring.internal_encoding is deprecated in Unknown on line 0 - -Deprecated: PHP Startup: Use of mbstring.http_input is deprecated in Unknown on line 0 - -Deprecated: PHP Startup: Use of mbstring.http_output is deprecated in Unknown on line 0 - -Deprecated: PHP Startup: Use of mbstring.internal_encoding is deprecated in Unknown on line 0 array(13) { ["internal_encoding"]=> string(5) "UTF-8" diff --git a/ext/mbstring/tests/mb_internal_encoding_basic2.phpt b/ext/mbstring/tests/mb_internal_encoding_basic2.phpt index 75bf208e3a3b6..2f1f39596fe44 100644 --- a/ext/mbstring/tests/mb_internal_encoding_basic2.phpt +++ b/ext/mbstring/tests/mb_internal_encoding_basic2.phpt @@ -22,9 +22,6 @@ var_dump(ini_get('default_charset')); var_dump(ini_get('input_encoding')); var_dump(ini_get('output_encoding')); var_dump(ini_get('internal_encoding')); -var_dump(ini_get('mbstring.http_input')); -var_dump(ini_get('mbstring.http_output')); -var_dump(ini_get('mbstring.internal_encoding')); var_dump(mb_internal_encoding()); //default internal encoding var_dump(mb_internal_encoding('UTF-8')); //change internal encoding to UTF-8 @@ -38,9 +35,6 @@ string(0) "" string(10) "ISO-8859-1" string(10) "ISO-8859-1" string(10) "ISO-8859-1" -string(0) "" -string(0) "" -string(0) "" string(10) "ISO-8859-1" bool(true) string(5) "UTF-8" diff --git a/ext/mbstring/tests/mb_internal_encoding_ini_basic2.phpt b/ext/mbstring/tests/mb_internal_encoding_ini_basic2.phpt deleted file mode 100644 index 39451dff341c1..0000000000000 --- a/ext/mbstring/tests/mb_internal_encoding_ini_basic2.phpt +++ /dev/null @@ -1,30 +0,0 @@ ---TEST-- -Test INI mbstring.internal_encoding basic - encoding when valid specified ---SKIPIF-- - ---INI-- -mbstring.internal_encoding=ISO-8859-7 ---FILE-- - ---EXPECT-- -PHP Deprecated: PHP Startup: Use of mbstring.internal_encoding is deprecated in Unknown on line 0 - -Deprecated: PHP Startup: Use of mbstring.internal_encoding is deprecated in Unknown on line 0 -*** Testing INI mbstring.internal_encoding : basic functionality *** -ISO-8859-7 -ISO-8859-7 -UTF-8 -ISO-8859-7 diff --git a/ext/mbstring/tests/mb_internal_encoding_ini_invalid_encoding.phpt b/ext/mbstring/tests/mb_internal_encoding_ini_invalid_encoding.phpt index 4d2fb1eca186b..e34b3e2041a6f 100644 --- a/ext/mbstring/tests/mb_internal_encoding_ini_invalid_encoding.phpt +++ b/ext/mbstring/tests/mb_internal_encoding_ini_invalid_encoding.phpt @@ -1,33 +1,23 @@ --TEST-- -Test INI mbstring.internal_encoding basic - invalid encoding specified in INI +Test INI internal_encoding basic - invalid encoding specified in INI --SKIPIF-- --INI-- -mbstring.internal_encoding=BAD +internal_encoding=BAD --FILE-- --EXPECT-- -PHP Deprecated: PHP Startup: Use of mbstring.internal_encoding is deprecated in Unknown on line 0 -PHP Warning: PHP Startup: Unknown encoding "BAD" in ini setting in Unknown on line 0 - -Deprecated: PHP Startup: Use of mbstring.internal_encoding is deprecated in Unknown on line 0 - -Warning: PHP Startup: Unknown encoding "BAD" in ini setting in Unknown on line 0 -*** Testing INI mbstring.internal_encoding: invalid encoding specified in INI *** +*** Testing INI internal_encoding: invalid encoding specified in INI *** UTF-8 -BAD UTF-8 -BAD diff --git a/ext/standard/tests/strings/htmlentities25.phpt b/ext/standard/tests/strings/htmlentities25.phpt deleted file mode 100644 index f2ac50df2cf8d..0000000000000 --- a/ext/standard/tests/strings/htmlentities25.phpt +++ /dev/null @@ -1,21 +0,0 @@ ---TEST-- -htmlentities() should not be influenced by mb_internal_encoding() ---INI-- -default_charset= -internal_encoding= -mbstring.internal_encoding=ISO-8859-1 ---SKIPIF-- - ---FILE-- - ---EXPECT-- -PHP Deprecated: PHP Startup: Use of mbstring.internal_encoding is deprecated in Unknown on line 0 - -Deprecated: PHP Startup: Use of mbstring.internal_encoding is deprecated in Unknown on line 0 -string(18) "äöü"