summaryrefslogtreecommitdiff
path: root/time.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-13 07:13:27 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-13 07:13:27 +0000
commit090004886d24023af8fa32e3fe589340b31eb72c (patch)
treed46e976b4036d7b817fd8eb9f9c1ff7c9bdda1cb /time.c
parent0d242ac61a3a55e82a417d30940d2cc63148a822 (diff)
* time.c (time_cmp): retry with right hand operand if its not a
time object. [ruby-dev:35011] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18566 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'time.c')
-rw-r--r--time.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/time.c b/time.c
index fdf465ceb8..236c2e9683 100644
--- a/time.c
+++ b/time.c
@@ -1087,8 +1087,18 @@ time_cmp(VALUE time1, VALUE time2)
if (tobj1->ts.tv_sec > tobj2->ts.tv_sec) return INT2FIX(1);
return INT2FIX(-1);
}
+ else {
+ VALUE cmp;
+ int n;
+
+ cmp = rb_funcall(time2, rb_intern("<=>"), 1, time1);
+ if (NIL_P(cmp)) return Qnil;
- return Qnil;
+ n = rb_cmpint(cmp, time1, time2);
+ if (n == 0) return INT2FIX(0);
+ if (n > 0) return INT2FIX(1);
+ return INT2FIX(-1);
+ }
}
/*