Bug in time<=? and time>=?
Dave Gurnell 28 Nov 2009 09:45 UTC
Hi,
I think there is a bug in the implementation of the aforementioned procedures. The same bug is present in time<=? and time>=?. I'll use the PLT implementation of time<=? as an example:
(define (time<=? time1 time2)
(tm:time-compare-check time1 time2 'time<=?)
(or (<= (time-second time1) (time-second time2))
(and (= (time-second time1) (time-second time2))
(<= (time-nanosecond time1) (time-nanosecond time2)))))
The first <= should be a <, like this:
(define (time<=? time1 time2)
(tm:time-compare-check time1 time2 'time<=?)
(or (< (time-second time1) (time-second time2))
(and (= (time-second time1) (time-second time2))
(<= (time-nanosecond time1) (time-nanosecond time2)))))
Otherwise the following code erroneously returns #t:
(time<=? (make-time time-utc 2 1)
(make-time time-utc 1 1))
I've filed a bug report for this in PLT. I'm not sure if the bug is also present in the reference implementation.
Many thanks,
-- Dave Gurnell