- Logic change of r37554 is correct, RtlTimeFieldsToTime doesn't normalize invalid input values - remove these codes
- Related to bug #4917, part 1

svn path=/trunk/; revision=44344
This commit is contained in:
Gregor Schneider 2009-12-01 18:46:13 +00:00
parent 9d7f91d6ca
commit 09bdd4ffa0

View file

@ -61,14 +61,6 @@ static int DaysSinceEpoch(int Year)
return Days;
}
static __inline void NormalizeTimeFields(CSHORT *FieldToNormalize,
CSHORT *CarryField,
int Modulus)
{
*FieldToNormalize = (CSHORT) (*FieldToNormalize - Modulus);
*CarryField = (CSHORT) (*CarryField + 1);
}
/* FUNCTIONS *****************************************************************/
/*
@ -199,39 +191,6 @@ RtlTimeFieldsToTime(
return FALSE;
}
/* Normalize the TIME_FIELDS structure here */
while (IntTimeFields.Second >= SECSPERMIN)
{
NormalizeTimeFields(&IntTimeFields.Second,
&IntTimeFields.Minute,
SECSPERMIN);
}
while (IntTimeFields.Minute >= MINSPERHOUR)
{
NormalizeTimeFields(&IntTimeFields.Minute,
&IntTimeFields.Hour,
MINSPERHOUR);
}
while (IntTimeFields.Hour >= HOURSPERDAY)
{
NormalizeTimeFields(&IntTimeFields.Hour,
&IntTimeFields.Day,
HOURSPERDAY);
}
while (IntTimeFields.Day >
MonthLengths[IsLeapYear(IntTimeFields.Year)][IntTimeFields.Month - 1])
{
NormalizeTimeFields(&IntTimeFields.Day,
&IntTimeFields.Month,
SECSPERMIN);
}
while (IntTimeFields.Month > MONSPERYEAR)
{
NormalizeTimeFields(&IntTimeFields.Month,
&IntTimeFields.Year,
MONSPERYEAR);
}
/* Compute the time */
Time->QuadPart = DaysSinceEpoch(IntTimeFields.Year);
for (CurMonth = 1; CurMonth < IntTimeFields.Month; CurMonth++)