From d43e5e04c73b7ced997ed87da7f2c8cac759f63a Mon Sep 17 00:00:00 2001 From: Alexander Bakker Date: Sat, 15 Aug 2020 18:32:14 +0200 Subject: [PATCH] Prevent a crash caused by adding the same entry to the vault twice This could happen in rare cases where writing the vault to disk failed. --- .../com/beemdevelopment/aegis/ui/EditEntryActivity.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/EditEntryActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/EditEntryActivity.java index c46149d3..5b786355 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/EditEntryActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/EditEntryActivity.java @@ -452,7 +452,11 @@ public class EditEntryActivity extends AegisActivity { } private void addAndFinish(VaultEntry entry) { - if (_isNew) { + // It's possible that the new entry was already added to the vault, but writing the + // vault to disk failed, causing the user to tap 'Save' again. Calling addEntry + // again would cause a crash in that case, so the isEntryDuplicate check prevents + // that. + if (_isNew && !_vault.isEntryDuplicate(entry)) { _vault.addEntry(entry); } else { _vault.replaceEntry(entry);