fix folder update stats (I hope)
[claws.git] / src / procmsg.c
index d0d44de807b9ca891faead3f1dc16b983db21283..e5095af61dfa1b63730423c15d3608017a8dc4d3 100644 (file)
@@ -347,6 +347,18 @@ gint procmsg_get_last_num_in_cache(GSList *mlist)
        return last;
 }
 
+void procmsg_msg_list_free(GSList *mlist)
+{
+       GSList *cur;
+       MsgInfo *msginfo;
+
+       for (cur = mlist; cur != NULL; cur = cur->next) {
+               msginfo = (MsgInfo *)cur->data;
+               procmsg_msginfo_free(msginfo);
+       }
+       g_slist_free(mlist);
+}
+
 void procmsg_write_cache(MsgInfo *msginfo, FILE *fp)
 {
        MsgFlags flags = msginfo->flags & MSG_CACHED_FLAG_MASK;
@@ -391,8 +403,8 @@ static void mark_sum_func(gpointer key, gpointer value, gpointer data)
        MsgFlags flags = GPOINTER_TO_UINT(value);
        struct MarkSum *marksum = data;
 
-       if (MSG_IS_NEW(flags)) (*marksum->new)++;
-       if (MSG_IS_UNREAD(flags)) (*marksum->unread)++;
+       if (MSG_IS_NEW(flags) && !MSG_IS_IGNORE_THREAD(flags)) (*marksum->new)++;
+       if (MSG_IS_UNREAD(flags) && !MSG_IS_IGNORE_THREAD(flags)) (*marksum->unread)++;
        (*marksum->total)++;
 }
 
@@ -429,8 +441,8 @@ static GHashTable *procmsg_read_mark_file(const gchar *folder)
 
        while (fread(&num, sizeof(num), 1, fp) == 1) {
                if (fread(&flags, sizeof(flags), 1, fp) != 1) break;
-               MSG_SET_FLAGS(flags, MSG_CACHED);
 
+               MSG_SET_FLAGS(flags, MSG_CACHED);
                g_hash_table_insert(mark_table,
                                    GUINT_TO_POINTER(num),
                                    GUINT_TO_POINTER(flags));
@@ -773,6 +785,7 @@ void procmsg_msginfo_free(MsgInfo *msginfo)
 {
        if (msginfo == NULL) return;
 
+       g_free(msginfo->fromspace);
        g_free(msginfo->references);
        g_free(msginfo->returnreceiptto);
        g_free(msginfo->dispositionnotificationto);