diff options
-rw-r--r-- | internal.h | 1 | ||||
-rw-r--r-- | rational.c | 6 | ||||
-rw-r--r-- | time.c | 2 |
3 files changed, 5 insertions, 4 deletions
diff --git a/internal.h b/internal.h index 9c11f4a308..ad977cbbcc 100644 --- a/internal.h +++ b/internal.h @@ -1540,6 +1540,7 @@ VALUE rb_rational_reciprocal(VALUE x); VALUE rb_cstr_to_rat(const char *, int); VALUE rb_rational_abs(VALUE self); VALUE rb_rational_cmp(VALUE self, VALUE other); +VALUE rb_numeric_quo(VALUE x, VALUE y); /* re.c */ VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline); diff --git a/rational.c b/rational.c index e845506850..54fac1e5bc 100644 --- a/rational.c +++ b/rational.c @@ -2015,8 +2015,8 @@ numeric_denominator(VALUE self) * Returns the most exact division (rational for integers, float for floats). */ -static VALUE -numeric_quo(VALUE x, VALUE y) +VALUE +rb_numeric_quo(VALUE x, VALUE y) { if (RB_FLOAT_TYPE_P(y)) { return rb_funcall(x, rb_intern("fdiv"), 1, y); @@ -2736,7 +2736,7 @@ Init_Rational(void) rb_define_method(rb_cNumeric, "numerator", numeric_numerator, 0); rb_define_method(rb_cNumeric, "denominator", numeric_denominator, 0); - rb_define_method(rb_cNumeric, "quo", numeric_quo, 1); + rb_define_method(rb_cNumeric, "quo", rb_numeric_quo, 1); rb_define_method(rb_cInteger, "numerator", integer_numerator, 0); rb_define_method(rb_cInteger, "denominator", integer_denominator, 0); @@ -144,7 +144,7 @@ quov(VALUE x, VALUE y) return LONG2FIX(c); } } - ret = rb_funcall(x, id_quo, 1, y); + ret = rb_numeric_quo(x, y); if (RB_TYPE_P(ret, T_RATIONAL) && RRATIONAL(ret)->den == INT2FIX(1)) { ret = RRATIONAL(ret)->num; |