[kaffe] GregorianCalendar bug?

Dalibor Topic robilad@yahoo.com
Fri, 11 Oct 2002 07:42:02 -0700 (PDT)


Hallo Helmer,

--- Helmer Krämer <hkraemer@freenet.de> wrote:
> 
> Hi all,
> 
> while trying to get Tomcat 4.0.4 to run with kaffe
> CVS,
> I stumbled across the following line in
> GregorianCalendar.java:
> 
> int wday = up ? (int)((EPOCH_WDAY + days + 1) %
> DAYSPERWEEK) : (int)(((EPOCH_WDAY - days + 1) %
> DAYSPERWEEK) + DAYSPERWEEK);
> 
> which is supposed to calculate the day of the week
> (up is true
> when calculating something after 1.1. 1970,
> otherwise false).
> 
> I think this should be something like this:
> 
> int wday = up ? (int)((EPOCH_WDAY + days) %
> DAYSPERWEEK + 1) : (int)(((EPOCH_WDAY - days) %
> DAYSPERWEEK + 1));
> 
> because adding 1 before doing the modulo gives
> incorrect results for
> saturdays (for saturdays EPOCH_WDAY+days will be 6,
> so wday will be
> 0, which isn't a valid constant for a weekday) and
> adding DAYSPERWEEK
> simply can't be right, because it will always give
> results that are
> bigger than 7.

Sounds like I forgot to shake out the bugs before I
committed my last GregorianCalendar patch :(

Thanks for catching that one. I'm sure I've left a
couple of similar bugs in the GregorianCalendar code,
so I'd be glad if you could take a closer look at the
code.

danke,

dalibor topic

__________________________________________________
Do you Yahoo!?
Faith Hill - Exclusive Performances, Videos & More
http://faith.yahoo.com