@movzx said:
The fault was with the clock driver, and the code was not MS's. It did check for leap years, but it did so incorrectly.
According to this post, the following code was the culprit:
year = ORIGINYEAR; /* = 1980 */
while (days > 365)
{
if (IsLeapYear(year))
{
if (days > 366)
{
days -= 366;
year += 1;
}
}
else
{
days -= 365;
year += 1;
}
}
A neat little infinite loop ;)