diff options
author | David Faure <david.faure@kdab.com> | 2018-04-05 17:49:24 +0200 |
---|---|---|
committer | David Faure <david.faure@kdab.com> | 2018-04-06 07:19:01 +0000 |
commit | a1b1dd3b84bc53eab7e93245f89e25d7c2f3330e (patch) | |
tree | d245a0fa0d90c385dc0121329bdecdc45603ef16 | |
parent | e729ac6dc5efd2d68e1a98f63b9cfec83d349ea7 (diff) |
QMimeDatabase: fix assert when fetching data for invalid mimetype
The Q_ASSERT(mimePrivate.fromCache) at qmimedatabase.cpp:218
which I added in commit 7a5644d648, was being triggered when calling comment()
for invalid mimetypes such as db.mimeTypeForName("").
Change-Id: I8037041a4b435d2a5ba24ec94b7858e38b2f0bf2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r-- | src/corelib/mimetypes/qmimedatabase.cpp | 2 | ||||
-rw-r--r-- | tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/src/corelib/mimetypes/qmimedatabase.cpp b/src/corelib/mimetypes/qmimedatabase.cpp index edc414fa0a..7d529372c4 100644 --- a/src/corelib/mimetypes/qmimedatabase.cpp +++ b/src/corelib/mimetypes/qmimedatabase.cpp @@ -214,6 +214,8 @@ QMimeGlobMatchResult QMimeDatabasePrivate::findByFileName(const QString &fileNam void QMimeDatabasePrivate::loadMimeTypePrivate(QMimeTypePrivate &mimePrivate) { QMutexLocker locker(&mutex); + if (mimePrivate.name.isEmpty()) + return; // invalid mimetype if (!mimePrivate.loaded) { // XML provider sets loaded=true, binary provider does this on demand Q_ASSERT(mimePrivate.fromCache); QMimeBinaryProvider::loadMimeTypePrivate(mimePrivate); diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp index abc06bfe85..3144c3071c 100644 --- a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp +++ b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp @@ -214,6 +214,8 @@ void tst_QMimeDatabase::mimeTypeForName() QMimeType doesNotExist = db.mimeTypeForName(QString::fromLatin1("foobar/x-doesnot-exist")); QVERIFY(!doesNotExist.isValid()); + QCOMPARE(doesNotExist.comment(), QString()); + QCOMPARE(doesNotExist.aliases(), QStringList()); // TODO move to findByFile #ifdef Q_OS_LINUX |