aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--internal.h1
-rw-r--r--rational.c6
-rw-r--r--time.c2
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);
diff --git a/time.c b/time.c
index c97a2776da..3e93e02243 100644
--- a/time.c
+++ b/time.c
@@ -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;