merge revision(s) c1862cbb89: [Backport #20719]

[Bug #20719] `Float` argument must be ASCII compatible
This commit is contained in:
Takashi Kokubun 2024-11-04 14:37:14 -08:00
parent 2b713dcb89
commit 34a0f41d0a
3 changed files with 8 additions and 1 deletions

View file

@ -3489,6 +3489,7 @@ rb_str_to_dbl_raise(VALUE str, int badcheck, int raise, int *error)
VALUE v = 0; VALUE v = 0;
StringValue(str); StringValue(str);
rb_must_asciicompat(str);
s = RSTRING_PTR(str); s = RSTRING_PTR(str);
len = RSTRING_LEN(str); len = RSTRING_LEN(str);
if (s) { if (s) {

View file

@ -850,6 +850,12 @@ class TestFloat < Test::Unit::TestCase
o = Object.new o = Object.new
def o.to_f; inf = Float::INFINITY; inf/inf; end def o.to_f; inf = Float::INFINITY; inf/inf; end
assert_predicate(Float(o), :nan?) assert_predicate(Float(o), :nan?)
assert_raise(Encoding::CompatibilityError) {Float("0".encode("utf-16be"))}
assert_raise(Encoding::CompatibilityError) {Float("0".encode("utf-16le"))}
assert_raise(Encoding::CompatibilityError) {Float("0".encode("utf-32be"))}
assert_raise(Encoding::CompatibilityError) {Float("0".encode("utf-32le"))}
assert_raise(Encoding::CompatibilityError) {Float("0".encode("iso-2022-jp"))}
end end
def test_invalid_str def test_invalid_str

View file

@ -11,7 +11,7 @@
# define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR # define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
#define RUBY_VERSION_TEENY 5 #define RUBY_VERSION_TEENY 5
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR #define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
#define RUBY_PATCHLEVEL 103 #define RUBY_PATCHLEVEL 104
#include "ruby/version.h" #include "ruby/version.h"
#include "ruby/internal/abi.h" #include "ruby/internal/abi.h"