balsa r7862 - in branches/mailbox-gsequence: . libbalsa



Author: PeterB
Date: Wed Feb 20 13:31:31 2008
New Revision: 7862
URL: http://svn.gnome.org/viewvc/balsa?rev=7862&view=rev

Log:
mindex changes

Modified:
   branches/mailbox-gsequence/ChangeLog
   branches/mailbox-gsequence/libbalsa/mailbox.c

Modified: branches/mailbox-gsequence/libbalsa/mailbox.c
==============================================================================
--- branches/mailbox-gsequence/libbalsa/mailbox.c	(original)
+++ branches/mailbox-gsequence/libbalsa/mailbox.c	Wed Feb 20 13:31:31 2008
@@ -385,17 +385,19 @@
 }
 
 void
-libbalsa_mailbox_index_set_flags(LibBalsaMailbox *mailbox,
-                                 unsigned msgno, LibBalsaMessageFlag f)
-{
-    LibBalsaMailboxIndexEntry *entry =
-        libbalsa_mailbox_get_index_entry(mailbox, msgno);
-
-    if (VALID_ENTRY(entry)) {
-        entry->status_icon = 
-            libbalsa_get_icon_from_flags(f);
-        entry->unseen = f & LIBBALSA_MESSAGE_FLAG_NEW;
-        libbalsa_mailbox_msgno_changed(mailbox, msgno);
+libbalsa_mailbox_index_set_flags(LibBalsaMailbox   * mailbox,
+                                 unsigned            msgno,
+                                 LibBalsaMessageFlag f)
+{
+    if (mailbox->msg_tree) {
+        LibBalsaMailboxIndexEntry *entry =
+            libbalsa_mailbox_get_index_entry(mailbox, msgno);
+
+        if (VALID_ENTRY(entry)) {
+            entry->status_icon = libbalsa_get_icon_from_flags(f);
+            entry->unseen = f & LIBBALSA_MESSAGE_FLAG_NEW;
+            libbalsa_mailbox_msgno_changed(mailbox, msgno);
+        }
     }
 }
 
@@ -535,9 +537,6 @@
 	LibBalsaMailboxState saved_state;
 
         mailbox->stamp++;
-        if(mailbox->mindex) g_warning("mindex set - I leak memory");
-        mailbox->mindex =
-            g_array_new(FALSE, TRUE, sizeof(LibBalsaMailboxIndex));
 
 	saved_state = mailbox->state;
 	mailbox->state = LB_MAILBOX_STATE_OPENING;
@@ -1555,7 +1554,6 @@
     GSequenceIter *node;
 
     g_return_if_fail(LIBBALSA_IS_MAILBOX(mailbox));
-    g_return_if_fail(seqno > 0 && seqno <= mailbox->mindex->len);
 
     g_signal_emit(mailbox, libbalsa_mailbox_signals[MESSAGE_EXPUNGED],
                   0, seqno);
@@ -1567,6 +1565,12 @@
         return;
     }
 
+    if (seqno == 0 || seqno > mailbox->mindex->len) {
+        g_warning("Message number %u out of range", seqno);
+        gdk_threads_leave();
+        return;
+    }
+
     lbm_index = LBM_INDEX(mailbox, seqno);
     libbalsa_mailbox_index_entry_free(lbm_index->entry);
 
@@ -3799,6 +3803,9 @@
     if (!mailbox->msg_tree)
         mailbox->msg_tree =
             g_sequence_new((GDestroyNotify) lbm_node_info_free);
+    if (!mailbox->mindex)
+        mailbox->mindex =
+            g_array_new(FALSE, TRUE, sizeof(LibBalsaMailboxIndex));
 
     lbm_update_msg_tree(mailbox, new_tree);
     g_node_destroy(new_tree);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]