summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManos Pitsidianakis <el13635@mail.ntua.gr>2019-04-03 22:20:48 +0300
committerManos Pitsidianakis <el13635@mail.ntua.gr>2019-06-10 19:40:42 +0300
commitba6c25982009f9e9e1e73664abbddaabe1642c08 (patch)
treee231af451d6d51d7249faff6cec62fdae38423c0
parentdb6e83b7558e68ef09515da7fe0b2560714f745a (diff)
melib: fix duplication of thread nodes in update envelope event
-rw-r--r--melib/src/mailbox/thread.rs14
1 files changed, 9 insertions, 5 deletions
diff --git a/melib/src/mailbox/thread.rs b/melib/src/mailbox/thread.rs
index 8e86b842..ee902519 100644
--- a/melib/src/mailbox/thread.rs
+++ b/melib/src/mailbox/thread.rs
@@ -1020,11 +1020,15 @@ impl Threads {
tree = &mut temp_tree[new_id].children;
}
}
- /* Add new child */
- let tree_node = ThreadTree::new(id);
- tree.push(tree_node);
- let new_id = tree.len() - 1;
- node_build(&mut tree[new_id], id, &mut self.thread_nodes, 1, collection);
+ let pos = if let Some(pos) = tree.iter().position(|v| v.id == id) {
+ pos
+ } else {
+ /* Add new child */
+ let tree_node = ThreadTree::new(id);
+ tree.push(tree_node);
+ tree.len() - 1
+ };
+ node_build(&mut tree[pos], id, &mut self.thread_nodes, 1, collection);
}
// FIXME: use insertion according to self.sort etc instead of sorting everytime
self.inner_sort_by(*self.sort.borrow(), collection);