summaryrefslogtreecommitdiff
path: root/time.c
diff options
context:
space:
mode:
Diffstat (limited to 'time.c')
-rw-r--r--time.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/time.c b/time.c
index c8f15bfc97..c01ca743d5 100644
--- a/time.c
+++ b/time.c
@@ -320,6 +320,11 @@ v2w_bignum(VALUE v)
static inline wideval_t
v2w(VALUE v)
{
+ if (RB_TYPE_P(v, T_RATIONAL)) {
+ if (RRATIONAL(v)->den != LONG2FIX(1))
+ return v;
+ v = RRATIONAL(v)->num;
+ }
#if WIDEVALUE_IS_WIDER
if (FIXNUM_P(v)) {
return WIDEVAL_WRAP((WIDEVALUE)(SIGNED_WIDEVALUE)(long)v);