year = ORIGINYEAR; /* = 1980 */ while (days > 365) { if (IsLeapYear(year)) { if (days > 366) { days -= 366; year += 1; } } else { days -= 365; year += 1; } }This site has some good discussion of the problem. When in a leap-year and it reaches the last day of the year and can't break out of the outer loop. Hmmm, perhaps a little bit of TESTING! Trying this function with perhaps just a few samples would have revealed this. First off - this is a precise case where this code is needlessy complex, and quite honestly for no reason whatever. There are probably somewhere in the neighborhood of a few thousand routines for dates. Why did they need to invent something new. By the way - the fix is simply to change the days>366 to days>=366.
Thursday, January 1, 2009
Zune Date Problems
So today the Urban word of the day was: Y2K9 - The simultaneous worldwide crash of every 30GB Zune worldwide during the early hours of the morning on Dec 31, 2008.
Seems it is related to the following stub of C-code.
Subscribe to:
Posts (Atom)