From 114d1751dc8173ec283b2ab5ea8096e799be2c39 Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 21 Dec 2016 01:29:57 +0000 Subject: [PATCH] numeric.c: allow nil as rounding mode option * numeric.c (rb_num_get_rounding_option): allow nil same as the default behavior, per [ruby-core:77961]. [Bug #12548] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57130 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- numeric.c | 3 +++ test/ruby/test_float.rb | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/numeric.c b/numeric.c index 17d15f6c92..dabcdc39de 100644 --- a/numeric.c +++ b/numeric.c @@ -209,6 +209,9 @@ rb_num_get_rounding_option(VALUE opts) if (SYMBOL_P(rounding)) { str = rb_sym2str(rounding); } + else if (NIL_P(rounding)) { + goto noopt; + } else if (!RB_TYPE_P(str = rounding, T_STRING)) { str = rb_check_string_type(rounding); if (NIL_P(str)) goto invalid; diff --git a/test/ruby/test_float.rb b/test/ruby/test_float.rb index eccc86740a..5a566879b7 100644 --- a/test/ruby/test_float.rb +++ b/test/ruby/test_float.rb @@ -723,8 +723,8 @@ class TestFloat < Test::Unit::TestCase end def test_round_half_invalid - assert_raise_with_message(ArgumentError, /nil/) { - 1.0.round(half: nil) + assert_raise_with_message(ArgumentError, /Object/) { + 1.0.round(half: Object) } assert_raise_with_message(ArgumentError, /xxx/) { 1.0.round(half: "\0xxx")