diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | libsylph/mh.c | 42 |
2 files changed, 26 insertions, 21 deletions
@@ -1,3 +1,8 @@ +2013-03-13 + + * libsylph/mh.c: mh_scan_tree_recursive(): fixed rebuilding of folder + tree which had been broken at 3.4.0beta1 (#103). + 2013-02-15 * procheader_scan_date_string(): optimized. diff --git a/libsylph/mh.c b/libsylph/mh.c index e8afa6b9..e30c0078 100644 --- a/libsylph/mh.c +++ b/libsylph/mh.c @@ -1693,32 +1693,16 @@ static void mh_scan_tree_recursive(FolderItem *item) folder = item->folder; - debug_print("scanning %s ...\n", - item->path ? item->path : LOCAL_FOLDER(folder)->rootpath); - if (folder->ui_func) - folder->ui_func(folder, item, folder->ui_func_data); - - if (item->path) { - gint new, unread, total, min, max; - - procmsg_get_mark_sum - (item, &new, &unread, &total, &min, &max, 0); - if (n_msg > total) { - new += n_msg - total; - unread += n_msg - total; - } - item->new = new; - item->unread = unread; - item->total = n_msg; - item->updated = TRUE; - item->mtime = 0; - } - if (g_node_depth(item->node) >= MAX_RECURSION_LEVEL) { g_warning("mh_scan_tree_recursive(): max recursion level (%u) reached.", MAX_RECURSION_LEVEL); return; } + debug_print("scanning %s ...\n", + item->path ? item->path : LOCAL_FOLDER(folder)->rootpath); + if (folder->ui_func) + folder->ui_func(folder, item, folder->ui_func_data); + fs_path = item->path ? g_filename_from_utf8(item->path, -1, NULL, NULL, NULL) : g_strdup("."); @@ -1867,6 +1851,22 @@ static void mh_scan_tree_recursive(FolderItem *item) #else closedir(dp); #endif + + if (item->path) { + gint new, unread, total, min, max; + + procmsg_get_mark_sum + (item, &new, &unread, &total, &min, &max, 0); + if (n_msg > total) { + new += n_msg - total; + unread += n_msg - total; + } + item->new = new; + item->unread = unread; + item->total = n_msg; + item->updated = TRUE; + item->mtime = 0; + } } static gboolean mh_rename_folder_func(GNode *node, gpointer data) |