summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2021-11-20 15:01:40 +0100
committerAnton Khirnov <anton@khirnov.net>2021-11-20 15:01:40 +0100
commit91b6b4f25e0fb8ccc9d96893f19499b62f73c78b (patch)
tree37072f9c9bee976cb84b727b954097662bb7665c
parent2b6c9088c78d1aa944eeb969f678d644b8ef1180 (diff)
mail/envelope:_EnvelopeHeaders: make del delete all the entries
-rw-r--r--alot/mail/envelope.py19
1 files changed, 15 insertions, 4 deletions
diff --git a/alot/mail/envelope.py b/alot/mail/envelope.py
index 655b5fe6..7f07eba4 100644
--- a/alot/mail/envelope.py
+++ b/alot/mail/envelope.py
@@ -59,10 +59,21 @@ class _EnvelopeHeaders:
return self._vals[idx][0]
def __delitem__(self, key):
- idx = self._key_to_idx(key)
- del self._keys_lower[idx]
- del self._keys[idx]
- del self._vals[idx]
+ deleted = False
+
+ while True:
+ try:
+ idx = self._key_to_idx(key)
+ except KeyError:
+ if deleted:
+ return
+ raise
+
+ del self._keys_lower[idx]
+ del self._keys[idx]
+ del self._vals[idx]
+
+ deleted = True
def __contains__(self, key):
return key.lower() in self._keys_lower