diff options
author | Nikita Baryshnikov <nib952051@gmail.com> | 2015-04-09 13:41:19 +0300 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2015-04-20 07:43:58 +0000 |
commit | ad03511256a8279a8f55069e5a3a3465a9e122ec (patch) | |
tree | 2f9341e388b3a4b1804d3f00ab885730a957df95 | |
parent | 280084cf96eb1d7fa8dba580866477c572a976c9 (diff) |
QDir: fix int overflow
This caused reverse order of session items in qt creator. Introduced
in ba287c55ef179b073482453298f513992b54c11e.
Change-Id: I5c37ca6a1ef4753b6449eb9e87b4def5ea858677
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
-rw-r--r-- | src/corelib/io/qdir.cpp | 2 | ||||
-rw-r--r-- | tests/auto/corelib/io/qdir/tst_qdir.cpp | 41 |
2 files changed, 42 insertions, 1 deletions
diff --git a/src/corelib/io/qdir.cpp b/src/corelib/io/qdir.cpp index 8380404219..3a9ae2ee6d 100644 --- a/src/corelib/io/qdir.cpp +++ b/src/corelib/io/qdir.cpp @@ -219,7 +219,7 @@ bool QDirSortItemComparator::operator()(const QDirSortItem &n1, const QDirSortIt if ((qt_cmp_si_sort_flags & QDir::DirsLast) && (f1->item.isDir() != f2->item.isDir())) return !f1->item.isDir(); - int r = 0; + qint64 r = 0; int sortBy = (qt_cmp_si_sort_flags & QDir::SortByMask) | (qt_cmp_si_sort_flags & QDir::Type); diff --git a/tests/auto/corelib/io/qdir/tst_qdir.cpp b/tests/auto/corelib/io/qdir/tst_qdir.cpp index caa22db144..e8a7105f6e 100644 --- a/tests/auto/corelib/io/qdir/tst_qdir.cpp +++ b/tests/auto/corelib/io/qdir/tst_qdir.cpp @@ -90,6 +90,8 @@ private slots: void entryList_data(); void entryList(); + void entryListTimedSort(); + void entryListSimple_data(); void entryListSimple(); @@ -831,6 +833,45 @@ void tst_QDir::entryList() QFile::remove(entrylistPath + "brokenlink"); } +void tst_QDir::entryListTimedSort() +{ +#ifndef QT_NO_PROCESS + const QString touchBinary = "/bin/touch"; + if (!QFile::exists(touchBinary)) + QSKIP("/bin/touch not found"); + + const QString entrylistPath = m_dataPath + "/entrylist/"; + QTemporaryFile aFile(entrylistPath + "A-XXXXXX.qws"); + QTemporaryFile bFile(entrylistPath + "B-XXXXXX.qws"); + + QVERIFY(aFile.open()); + QVERIFY(bFile.open()); + { + QProcess p; + p.start(touchBinary, QStringList() << "-t" << "201306021513" << aFile.fileName()); + QVERIFY(p.waitForFinished(1000)); + } + { + QProcess p; + p.start(touchBinary, QStringList() << "-t" << "201504131513" << bFile.fileName()); + QVERIFY(p.waitForFinished(1000)); + } + + QStringList actual = QDir(entrylistPath).entryList(QStringList() << "*.qws", QDir::NoFilter, + QDir::Time); + + QFileInfo aFileInfo(aFile); + QFileInfo bFileInfo(bFile); + QVERIFY(bFileInfo.lastModified().msecsTo(aFileInfo.lastModified()) < 0); + + QCOMPARE(actual.size(), 2); + QCOMPARE(actual.first(), bFileInfo.fileName()); + QCOMPARE(actual.last(), aFileInfo.fileName()); +#else + QSKIP("This test requires QProcess support."); +#endif // QT_NO_PROCESS +} + void tst_QDir::entryListSimple_data() { QTest::addColumn<QString>("dirName"); |