From 090004886d24023af8fa32e3fe589340b31eb72c Mon Sep 17 00:00:00 2001 From: matz Date: Wed, 13 Aug 2008 07:13:27 +0000 Subject: * 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 --- ChangeLog | 5 +++++ time.c | 12 +++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 7bc57d93f8..3c56e98a11 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Wed Aug 13 16:05:50 2008 Yukihiro Matsumoto + + * time.c (time_cmp): retry with right hand operand if its not a + time object. [ruby-dev:35011] + Wed Aug 13 15:51:22 2008 Akinori MUSHA * string.c: Apply a temporary fix to fix build on OS X. A real 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); + } } /* -- cgit v1.2.3