diff options
Diffstat (limited to 'rational.c')
-rw-r--r-- | rational.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/rational.c b/rational.c index c350ad32b7..b648b19438 100644 --- a/rational.c +++ b/rational.c @@ -2548,6 +2548,12 @@ nurat_s_convert(int argc, VALUE *argv, VALUE klass) return rb_convert_type_with_id(a1, T_RATIONAL, "Rational", idTo_r); } else { + if (!k_numeric_p(a1)) { + a1 = rb_check_convert_type_with_id(a1, T_RATIONAL, "Rational", idTo_r); + } + if (!k_numeric_p(a2)) { + a2 = rb_check_convert_type_with_id(a2, T_RATIONAL, "Rational", idTo_r); + } if ((k_numeric_p(a1) && k_numeric_p(a2)) && (!f_integer_p(a1) || !f_integer_p(a2))) return f_div(a1, a2); |