diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-02-24 09:39:17 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-02-24 09:39:17 +0000 |
commit | 8c440619289b4e20c7b6b0e1b1a5a5c9a4252530 (patch) | |
tree | 294becc336406e7bc13844d9acde8dc8341bf36e /numeric.c | |
parent | bdd6b995f91277a258db8614371be08e3fe9988d (diff) |
Integer.sqrt argument check
* numeric.c (rb_int_s_isqrt): check if the argument is an integer.
[Feature #13219]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57706 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'numeric.c')
-rw-r--r-- | numeric.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -5158,6 +5158,7 @@ static VALUE rb_int_s_isqrt(VALUE self, VALUE num) { unsigned long n, sq; + num = rb_to_int(num); if (FIXNUM_P(num)) { if (FIXNUM_NEGATIVE_P(num)) { domain_error("isqrt"); @@ -5166,7 +5167,7 @@ rb_int_s_isqrt(VALUE self, VALUE num) sq = rb_ulong_isqrt(n); return LONG2FIX(sq); } - if (RB_TYPE_P(num, T_BIGNUM)) { + else { size_t biglen; if (RBIGNUM_NEGATIVE_P(num)) { domain_error("isqrt"); @@ -5183,7 +5184,6 @@ rb_int_s_isqrt(VALUE self, VALUE num) #endif return rb_big_isqrt(num); } - return Qnil; } /* |