timezone stuff on 64 bit machines
Erik Troan
ewt at redhat.com
Wed Oct 18 16:24:56 UTC 1995
I'm trying to use the timezone stuff you maintain on a 64-bit Alpha
running Linux. It builds fine, but the timezone compiler has some
trouble (it runs forever). I tracked the problem down to this code from
timesub():
if (days >= 0)
for ( ; ; ) {
yleap = isleap(y);
if (days < (long) year_lengths[yleap])
break;
++y;
days = days - (long) year_lengths[yleap];
}
else do {
--y;
yleap = isleap(y);
days = days + (long) year_lengths[yleap];
} while (days < 0);
This works fine when the number of years you can represent is small, as it
is on a 32 bit machine. On a 64-bit machine however, you have some
4 billion more years to worry about. That means this loop has to repeat
well over 4 billion times, and that takes 1 while :-)
Any ideas on how to fix this?
Erik
-------------------------------------------------------------------------------
"Eggheads unite! You have nothing to lose but your yolks" - Adlai Stevenson
Erik Troan = http://sunsite.unc.edu/ewt/ = ewt at sunsite.unc.edu
More information about the tz
mailing list