Correct qt_mktime()'s check for last second in 1969
It was comparing time->second() to MSECS_PER_DAY - 1, but time->second() is the second within its minute, so is at most 59. It should be comparing seconds into the day to SECS_PER_DAY - 1. Prompted by a PVS-studio article. Pick-to: 6.1 6.0 5.15 Change-Id: I1802c49fa18818f4b4fe74f187da5f799df7d1de Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>bb10
parent
755c678f0f
commit
94b9ee03b5
|
|
@ -2486,7 +2486,7 @@ static qint64 qt_mktime(QDate *date, QTime *time, QDateTimePrivate::DaylightStat
|
|||
*abbreviation = qt_tzname(QDateTimePrivate::StandardTime);
|
||||
}
|
||||
} else if (yy == 1969 && mm == 12 && dd == 31
|
||||
&& time->second() == MSECS_PER_DAY - 1) {
|
||||
&& QTime(0, 0).secsTo(*time) == SECS_PER_DAY - 1) {
|
||||
// There was, of course, a last second in 1969, at time_t(-1); we won't
|
||||
// rescue it if it's not in normalised form, and we don't know its DST
|
||||
// status (unless we did already), but let's not wantonly declare it
|
||||
|
|
|
|||
Loading…
Reference in New Issue