summaryrefslogtreecommitdiffstats
path: root/melib/src
diff options
context:
space:
mode:
authorManos Pitsidianakis <el13635@mail.ntua.gr>2019-04-04 13:08:23 +0300
committerManos Pitsidianakis <el13635@mail.ntua.gr>2019-06-10 19:40:42 +0300
commitac0e2cbe4480285dbe48f7a819986d21e6079bc2 (patch)
treef932c474d27e1548b65082624e21e696eca3a390 /melib/src
parent37f95dd86db67826eba48957f8e864c7fde14eb7 (diff)
melib: fix invalid folder hierarchy in Backend::folders()
Diffstat (limited to 'melib/src')
-rw-r--r--melib/src/mailbox/backends/maildir/backend.rs17
1 files changed, 13 insertions, 4 deletions
diff --git a/melib/src/mailbox/backends/maildir/backend.rs b/melib/src/mailbox/backends/maildir/backend.rs
index c70c0b94..86636cf9 100644
--- a/melib/src/mailbox/backends/maildir/backend.rs
+++ b/melib/src/mailbox/backends/maildir/backend.rs
@@ -212,8 +212,8 @@ impl MailBackend for MaildirType {
file_name,
) {
if cfg!(feature = "debug_log") {
-eprintln!("Create event {} {} {}", env.hash(), env.subject(), pathbuf.display());
-}
+ eprintln!("Create event {} {} {}", env.hash(), env.subject(), pathbuf.display());
+ }
sender.send(RefreshEvent {
hash: folder_hash,
kind: Create(Box::new(env)),
@@ -238,6 +238,7 @@ eprintln!("Create event {} {} {}", env.hash(), env.subject(), pathbuf.display())
if let Some((k, v)) =
index_lock.iter_mut().find(|(_, v)| **v == pathbuf)
{
+ //TODO FIXME This doesn't make sense?
*v = pathbuf.clone();
*k
} else {
@@ -409,10 +410,18 @@ impl MaildirType {
path.file_name().unwrap().to_str().unwrap().to_string(),
Vec::with_capacity(0),
) {
- folders.push(f);
+ if f.is_valid().is_ok() {
+ folders.push(f);
+ }
}
}
- folders[0].children = recurse_folders(&mut folders, &path);
+
+ if folders.is_empty() {
+ recurse_folders(&mut folders, &path);
+ } else {
+ folders[0].children = recurse_folders(&mut folders, &path);
+ }
+
let hash_indexes = Arc::new(Mutex::new(FnvHashMap::with_capacity_and_hasher(
folders.len(),
Default::default(),