From fdf45debdf49e636d007ca43270cac57061304cd Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Fri, 13 Dec 2019 20:09:42 +0100 Subject: [PATCH] Remove deprecated behaviour of passing encoding as third parameter in mb_strrpos() Merged GH-5011 --- UPGRADING | 2 + ext/mbstring/mbstring.c | 35 +-------- .../tests/mb_strrpos_encoding_3rd_param.phpt | 14 ---- ext/mbstring/tests/mb_strrpos_variation5.phpt | 73 ------------------- 4 files changed, 3 insertions(+), 121 deletions(-) delete mode 100644 ext/mbstring/tests/mb_strrpos_encoding_3rd_param.phpt delete mode 100644 ext/mbstring/tests/mb_strrpos_variation5.phpt diff --git a/UPGRADING b/UPGRADING index 6ebe7c29af..0a6ad2a8c9 100644 --- a/UPGRADING +++ b/UPGRADING @@ -211,6 +211,8 @@ PHP 8.0 UPGRADE NOTES restored with an explicit call to chr(). . The $is_hex parameter, which was not used internally, has been removed from mb_decode_numericentity(). + . The legacy behaviour of passing the encoding as the third argument instead of an offset for the mb_strrpos + function has been removed, provide an explicit 0 offset with the encoding as the fourth argument. - PCRE: . When passing invalid escape sequences they are no longer interpreted as diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index 7741629702..7f92aa2bd0 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -2146,45 +2146,12 @@ PHP_FUNCTION(mb_strrpos) { mbfl_string haystack, needle; zend_string *enc_name = NULL; - zval *zoffset = NULL; zend_long offset = 0, n; - if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|zS", (char **)&haystack.val, &haystack.len, (char **)&needle.val, &needle.len, &zoffset, &enc_name) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|lS", (char **)&haystack.val, &haystack.len, (char **)&needle.val, &needle.len, &offset, &enc_name) == FAILURE) { return; } - if (zoffset) { - if (Z_TYPE_P(zoffset) == IS_STRING) { - switch (Z_STRVAL_P(zoffset)[0]) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case ' ': - case '-': - case '.': - convert_to_long_ex(zoffset); - offset = Z_LVAL_P(zoffset); - break; - default : - enc_name = Z_STR_P(zoffset); - php_error_docref(NULL, E_DEPRECATED, - "Passing the encoding as third parameter is deprecated. " - "Use an explicit zero offset"); - break; - } - } else { - convert_to_long_ex(zoffset); - offset = Z_LVAL_P(zoffset); - } - } - haystack.no_language = needle.no_language = MBSTRG(language); haystack.encoding = needle.encoding = php_mb_get_encoding(enc_name); if (!haystack.encoding) { diff --git a/ext/mbstring/tests/mb_strrpos_encoding_3rd_param.phpt b/ext/mbstring/tests/mb_strrpos_encoding_3rd_param.phpt deleted file mode 100644 index 66ccd00908..0000000000 --- a/ext/mbstring/tests/mb_strrpos_encoding_3rd_param.phpt +++ /dev/null @@ -1,14 +0,0 @@ ---TEST-- -Passing encoding as 3rd param to mb_strrpos (legacy) ---SKIPIF-- - ---FILE-- - ---EXPECTF-- -Deprecated: mb_strrpos(): Passing the encoding as third parameter is deprecated. Use an explicit zero offset in %s on line %d -int(8) diff --git a/ext/mbstring/tests/mb_strrpos_variation5.phpt b/ext/mbstring/tests/mb_strrpos_variation5.phpt deleted file mode 100644 index 6b7b75ecd9..0000000000 --- a/ext/mbstring/tests/mb_strrpos_variation5.phpt +++ /dev/null @@ -1,73 +0,0 @@ ---TEST-- -Test mb_strrpos() function : usage variations - pass encoding as third argument (deprecated behaviour) ---SKIPIF-- - ---FILE-- - "utf-8", - 'Single Quoted String' => 'utf-8', - 'Heredoc' => $stringh); -foreach ($inputs as $type => $input) { - echo "\n-- $type --\n"; - echo "-- With fourth encoding argument --\n"; - var_dump(mb_strrpos($string_mb, $needle_mb, $input, 'utf-8')); - echo "-- Without fourth encoding argument --\n"; - var_dump(mb_strrpos($string_mb, $needle_mb, $input)); -} - -echo "Done"; -?> ---EXPECTF-- -*** Testing mb_strrpos() : usage variations *** - --- Double Quoted String -- --- With fourth encoding argument -- - -Deprecated: mb_strrpos(): Passing the encoding as third parameter is deprecated. Use an explicit zero offset in %s on line %d -int(20) --- Without fourth encoding argument -- - -Deprecated: mb_strrpos(): Passing the encoding as third parameter is deprecated. Use an explicit zero offset in %s on line %d -int(20) - --- Single Quoted String -- --- With fourth encoding argument -- - -Deprecated: mb_strrpos(): Passing the encoding as third parameter is deprecated. Use an explicit zero offset in %s on line %d -int(20) --- Without fourth encoding argument -- - -Deprecated: mb_strrpos(): Passing the encoding as third parameter is deprecated. Use an explicit zero offset in %s on line %d -int(20) - --- Heredoc -- --- With fourth encoding argument -- - -Deprecated: mb_strrpos(): Passing the encoding as third parameter is deprecated. Use an explicit zero offset in %s on line %d -int(20) --- Without fourth encoding argument -- - -Deprecated: mb_strrpos(): Passing the encoding as third parameter is deprecated. Use an explicit zero offset in %s on line %d -int(20) -Done -- 2.40.0