From fd1378781dfbea7264061cea64860604c714d371 Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Sat, 22 Sep 2018 16:54:54 +0300 Subject: [PATCH] melib: insert envelope in threads after inserting it in collection --- melib/src/mailbox/collection.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/melib/src/mailbox/collection.rs b/melib/src/mailbox/collection.rs index f01fa23c..cbdb321c 100644 --- a/melib/src/mailbox/collection.rs +++ b/melib/src/mailbox/collection.rs @@ -85,10 +85,13 @@ impl Collection { self.envelopes.is_empty() } - pub fn insert(&mut self, mut envelope: Envelope) { - self.threads.insert(&mut envelope, &self.envelopes); + pub fn insert(&mut self, envelope: Envelope) { let hash = envelope.hash(); self.envelopes.insert(hash, envelope); + let env = self.envelopes.entry(hash).or_default() as *mut Envelope; + unsafe { + self.threads.insert(&mut (*env), &self.envelopes); + } } pub(crate) fn insert_reply(&mut self, envelope: Envelope) { self.threads.insert_reply(envelope, &mut self.envelopes);