From 1f47033835c177b9172aa970e61817185c61d7a1 Mon Sep 17 00:00:00 2001 From: Felix Geyer Date: Thu, 4 Jul 2013 13:31:38 +0200 Subject: [PATCH] Make sure icon() and iconPixmap() never crash. --- src/core/Entry.cpp | 15 +++++++++++---- src/core/Group.cpp | 15 +++++++++++---- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/core/Entry.cpp b/src/core/Entry.cpp index 7848300a8..39c9ad285 100644 --- a/src/core/Entry.cpp +++ b/src/core/Entry.cpp @@ -94,8 +94,14 @@ QImage Entry::icon() const return databaseIcons()->icon(m_data.iconNumber); } else { - // TODO: check if database() is 0 - return database()->metadata()->customIcon(m_data.customIcon); + Q_ASSERT(database()); + + if (database()) { + return database()->metadata()->customIcon(m_data.customIcon); + } + else { + return QImage(); + } } } @@ -105,9 +111,10 @@ QPixmap Entry::iconPixmap() const return databaseIcons()->iconPixmap(m_data.iconNumber); } else { + Q_ASSERT(database()); + QPixmap pixmap; - if (!QPixmapCache::find(m_pixmapCacheKey, &pixmap)) { - // TODO: check if database() is 0 + if (database() && !QPixmapCache::find(m_pixmapCacheKey, &pixmap)) { pixmap = QPixmap::fromImage(database()->metadata()->customIcon(m_data.customIcon)); m_pixmapCacheKey = QPixmapCache::insert(pixmap); } diff --git a/src/core/Group.cpp b/src/core/Group.cpp index 0868a82ad..1142adf15 100644 --- a/src/core/Group.cpp +++ b/src/core/Group.cpp @@ -115,8 +115,14 @@ QImage Group::icon() const return databaseIcons()->icon(m_data.iconNumber); } else { - // TODO: check if m_db is 0 - return m_db->metadata()->customIcon(m_data.customIcon); + Q_ASSERT(m_db); + + if (m_db) { + return m_db->metadata()->customIcon(m_data.customIcon); + } + else { + return QImage(); + } } } @@ -126,9 +132,10 @@ QPixmap Group::iconPixmap() const return databaseIcons()->iconPixmap(m_data.iconNumber); } else { + Q_ASSERT(m_db); + QPixmap pixmap; - if (!QPixmapCache::find(m_pixmapCacheKey, &pixmap)) { - // TODO: check if m_db is 0 + if (m_db && !QPixmapCache::find(m_pixmapCacheKey, &pixmap)) { pixmap = QPixmap::fromImage(m_db->metadata()->customIcon(m_data.customIcon)); m_pixmapCacheKey = QPixmapCache::insert(pixmap); }