From 97adfd5b546c75fd4ee70c541251df988d096ed6 Mon Sep 17 00:00:00 2001 From: Jonathan White Date: Sun, 12 Mar 2023 00:29:09 -0400 Subject: [PATCH] Fix crash when search clears while creating new entry * Fixes #7660 * Also fix code error in Icons::imageFormatsFilter. An inner loop looks for invalid characters in the code point, but erroneously calls `continue` within the inner loop when the intention was to continue in the outer loop. Fixed with a boolean test instead. --- src/gui/EntryPreviewWidget.cpp | 7 +++++-- src/gui/Icons.cpp | 11 ++++++----- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/gui/EntryPreviewWidget.cpp b/src/gui/EntryPreviewWidget.cpp index 13f00346c..c8d0b974d 100644 --- a/src/gui/EntryPreviewWidget.cpp +++ b/src/gui/EntryPreviewWidget.cpp @@ -565,6 +565,9 @@ void EntryPreviewWidget::setTabEnabled(QTabWidget* tabWidget, QWidget* widget, b QString EntryPreviewWidget::hierarchy(const Group* group, const QString& title) { - QString groupList = QString("%1").arg(group->hierarchy().join(" / ")); - return title.isEmpty() ? groupList : QString("%1 / %2").arg(groupList, title); + if (group) { + QString groupList = QString("%1").arg(group->hierarchy().join(" / ")); + return title.isEmpty() ? groupList : QString("%1 / %2").arg(groupList, title); + } + return {}; } diff --git a/src/gui/Icons.cpp b/src/gui/Icons.cpp index 2083444d7..395331221 100644 --- a/src/gui/Icons.cpp +++ b/src/gui/Icons.cpp @@ -256,7 +256,6 @@ QPixmap Icons::entryIconPixmap(const Entry* entry, IconSize size) if (entry->iconUuid().isNull()) { icon = databaseIcons()->icon(entry->iconNumber(), size); } else { - Q_ASSERT(entry->database()); if (entry->database()) { icon = Icons::customIconPixmap(entry->database(), entry->iconUuid(), size); } @@ -275,7 +274,6 @@ QPixmap Icons::groupIconPixmap(const Group* group, IconSize size) if (group->iconUuid().isNull()) { icon = databaseIcons()->icon(group->iconNumber(), size); } else { - Q_ASSERT(group->database()); if (group->database()) { icon = Icons::customIconPixmap(group->database(), group->iconUuid(), size); } @@ -299,13 +297,16 @@ QString Icons::imageFormatsFilter() QStringList formatsStringList; for (const QByteArray& format : formats) { + bool codePointClean = true; for (char codePoint : format) { if (!QChar(codePoint).isLetterOrNumber()) { - continue; + codePointClean = false; + break; } } - - formatsStringList.append("*." + QString::fromLatin1(format).toLower()); + if (codePointClean) { + formatsStringList.append("*." + QString::fromLatin1(format).toLower()); + } } return formatsStringList.join(" ");