diff --git a/src/core/Group.cpp b/src/core/Group.cpp index fb9d42921..cf263aa28 100644 --- a/src/core/Group.cpp +++ b/src/core/Group.cpp @@ -223,17 +223,17 @@ Entry* Group::lastTopVisibleEntry() const bool Group::isRecycled() const { auto group = this; - if (!group->database() || !group->m_db->metadata()) { - return false; + auto db = group->database(); + if (db) { + auto recycleBin = db->metadata()->recycleBin(); + do { + if (group == recycleBin) { + return true; + } + group = group->m_parent; + } while (group); } - do { - if (group == group->m_db->metadata()->recycleBin()) { - return true; - } - group = group->m_parent; - } while (group); - return false; } diff --git a/src/sshagent/SSHAgent.cpp b/src/sshagent/SSHAgent.cpp index 847691221..d3da08323 100644 --- a/src/sshagent/SSHAgent.cpp +++ b/src/sshagent/SSHAgent.cpp @@ -486,7 +486,7 @@ void SSHAgent::setAutoRemoveOnLock(const OpenSSHKey& key, bool autoRemove) } } -void SSHAgent::databaseLocked(QSharedPointer db) +void SSHAgent::databaseLocked(const QSharedPointer& db) { if (!db) { return; @@ -508,20 +508,20 @@ void SSHAgent::databaseLocked(QSharedPointer db) } } -void SSHAgent::databaseUnlocked(QSharedPointer db) +void SSHAgent::databaseUnlocked(const QSharedPointer& db) { if (!db || !isEnabled()) { return; } - for (Entry* e : db->rootGroup()->entriesRecursive()) { - if (db->metadata()->recycleBinEnabled() && e->group() == db->metadata()->recycleBin()) { + for (auto entry : db->rootGroup()->entriesRecursive()) { + if (entry->isRecycled()) { continue; } KeeAgentSettings settings; - if (!settings.fromEntry(e)) { + if (!settings.fromEntry(entry)) { continue; } @@ -531,7 +531,7 @@ void SSHAgent::databaseUnlocked(QSharedPointer db) OpenSSHKey key; - if (!settings.toOpenSSHKey(e, key, true)) { + if (!settings.toOpenSSHKey(entry, key, true)) { continue; } diff --git a/src/sshagent/SSHAgent.h b/src/sshagent/SSHAgent.h index 032438613..8ef6173a6 100644 --- a/src/sshagent/SSHAgent.h +++ b/src/sshagent/SSHAgent.h @@ -63,8 +63,8 @@ signals: void enabledChanged(bool enabled); public slots: - void databaseLocked(QSharedPointer db); - void databaseUnlocked(QSharedPointer db); + void databaseLocked(const QSharedPointer& db); + void databaseUnlocked(const QSharedPointer& db); private: const quint8 SSH_AGENT_FAILURE = 5;