From a82d1e1ebed9f4a2c9db3b223549bf52d08bb5d6 Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Sat, 29 Jun 2024 12:30:33 +0300 Subject: [PATCH] mail/listing.rs: fix RowsState::rename_env stale data RowsState::rename_env was not updating all EnvelopeHash related fields when a receiving an EnvelopeRename event, which can cause panics if the listing tries to index it. Concerns #426 Signed-off-by: Manos Pitsidianakis --- meli/src/mail/listing.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/meli/src/mail/listing.rs b/meli/src/mail/listing.rs index 588ed661..430ebfc7 100644 --- a/meli/src/mail/listing.rs +++ b/meli/src/mail/listing.rs @@ -204,6 +204,7 @@ impl RowsState { self.env_order.insert(new_hash, row); } if let Some(thread) = self.env_to_thread.remove(&old_hash) { + self.env_to_thread.insert(new_hash, thread); self.thread_to_env .entry(thread) .or_default() @@ -213,7 +214,7 @@ impl RowsState { let selection_status = self.selection.remove(&old_hash).unwrap_or(false); self.selection.insert(new_hash, selection_status); self.all_envelopes.remove(&old_hash); - self.all_envelopes.insert(old_hash); + self.all_envelopes.insert(new_hash); } }