[balsa] Do not crash on "select-part" signal



commit b0456aba1a112d59c2d1b14a55376becdf80246f
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Sat Jan 23 13:03:06 2010 -0500

    Do not crash on "select-part" signal
    
    	* src/message-window.c (destroy_message_window),
    	(mw_select_part_cb): do not crash on "select-part" signal.

 ChangeLog            |    5 +++++
 src/message-window.c |   22 +++++++++++++++-------
 2 files changed, 20 insertions(+), 7 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 33700ad..b6db36c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2010-01-23  Peter Bloomfield
 
+	* src/message-window.c (destroy_message_window),
+	(mw_select_part_cb): do not crash on "select-part" signal.
+
+2010-01-23  Peter Bloomfield
+
 	* src/balsa-message.c (balsa_message_set): clear tree before
 	selecting part;
 	(select_part): emit signal also for NULL part;
diff --git a/src/message-window.c b/src/message-window.c
index b661a10..37b53d9 100644
--- a/src/message-window.c
+++ b/src/message-window.c
@@ -673,6 +673,11 @@ destroy_message_window(GtkWidget * widget, MessageWindow * mw)
                                              G_SIGNAL_MATCH_DATA, 0, 0,
                                              NULL, NULL, mw);
 
+    if (mw->bmessage)
+        g_signal_handlers_disconnect_matched(G_OBJECT(mw->bmessage),
+                                             G_SIGNAL_MATCH_DATA, 0, 0,
+                                             NULL, NULL, mw);
+
     mw_set_message(mw, NULL);
 
     g_free(mw);
@@ -1039,12 +1044,15 @@ mw_select_part_cb(BalsaMessage * bm, MessageWindow * mw)
 #endif				/* HAVE_GTKHTML */
 
     /* set window title */
-    from = 
-        internet_address_list_to_string(bm->message->headers->from, FALSE);
-    title = g_strdup_printf(_("Message from %s: %s"), from,
-                            LIBBALSA_MESSAGE_GET_SUBJECT(bm->message));
-    g_free(from);
-    gtk_window_set_title(GTK_WINDOW(mw->window), title);
-    g_free(title);
+    if (bm && bm->message) {
+        from = internet_address_list_to_string(bm->message->headers->from,
+                                               FALSE);
+        title = g_strdup_printf(_("Message from %s: %s"), from,
+                                LIBBALSA_MESSAGE_GET_SUBJECT(bm->message));
+        g_free(from);
+        gtk_window_set_title(GTK_WINDOW(mw->window), title);
+        g_free(title);
+    }
+
     mw_set_part_buttons_sensitive(mw, bm);
 }



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