summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2020-01-27 16:12:15 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2020-01-27 16:12:15 +0900
commit1ddc719a562b1ee4c3ae6cf4d1f6c386e142b087 (patch)
tree557b2d25cf1a1787b155b25ebd6884ecaaa57ed4
parentaf899503a646f20d63d4aa2f358894b98f85dab7 (diff)
Check the encoding of `half:` option
-rw-r--r--numeric.c1
-rw-r--r--test/ruby/test_float.rb3
2 files changed, 4 insertions, 0 deletions
diff --git a/numeric.c b/numeric.c
index 2471f9bd04..c880199148 100644
--- a/numeric.c
+++ b/numeric.c
@@ -233,6 +233,7 @@ rb_num_get_rounding_option(VALUE opts)
str = rb_check_string_type(rounding);
if (NIL_P(str)) goto invalid;
}
+ rb_must_asciicompat(str);
s = RSTRING_PTR(str);
switch (RSTRING_LEN(str)) {
case 2:
diff --git a/test/ruby/test_float.rb b/test/ruby/test_float.rb
index 7cbf3b5a8f..a94bbce49e 100644
--- a/test/ruby/test_float.rb
+++ b/test/ruby/test_float.rb
@@ -764,6 +764,9 @@ class TestFloat < Test::Unit::TestCase
assert_raise_with_message(ArgumentError, /xxx/) {
1.0.round(half: "\0xxx")
}
+ assert_raise_with_message(Encoding::CompatibilityError, /ASCII incompatible/) {
+ 1.0.round(half: "up".force_encoding("utf-16be"))
+ }
end
def test_Float