aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/ChangeLog16
-rw-r--r--mail/mail-display.c7
2 files changed, 22 insertions, 1 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index e27ff8e094..392b75c810 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,3 +1,19 @@
+2002-04-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * mail-display.c (stream_write_or_redisplay_when_loaded): Ref the
+ html object here, this is an async handler so it's possible for
+ our caller (or someone else) to unref the html object before we
+ finish.
+ (load_content_free): Unref the async handler's ref of the html
+ object here.
+ (mail_display_new): Ref the html widget here so that we can be
+ sure that so long as the mail-display is "alive", so is the html
+ object. See bug #22328 for details. Basically, the message-browser
+ is being closed before the message gets loaded and so the html
+ object was being destroyed but the mail-display was still alive.
+ (mail_display_destroy): Unref the html object when the
+ mail-display is destroyed.
+
2002-04-19 Anna Marie Dirks <anna@ximian.com>
* mail-config.glade: Added yet more accelerators for the new config
diff --git a/mail/mail-display.c b/mail/mail-display.c
index a4d3ae65bd..cabab31feb 100644
--- a/mail/mail-display.c
+++ b/mail/mail-display.c
@@ -1355,6 +1355,7 @@ load_content_free (struct _mail_msg *mm)
struct _load_content_msg *m = (struct _load_content_msg *)mm;
g_free (m->url);
+ gtk_object_unref (GTK_OBJECT (m->html));
gtk_object_unref (GTK_OBJECT (m->display));
camel_object_unref (CAMEL_OBJECT (m->message));
}
@@ -1396,6 +1397,7 @@ stream_write_or_redisplay_when_loaded (MailDisplay *md,
m->display = md;
gtk_object_ref (GTK_OBJECT (m->display));
m->html = html;
+ gtk_object_ref (GTK_OBJECT (html));
m->handle = handle;
m->url = g_strdup (url);
m->redisplay_counter = md->redisplay_counter;
@@ -1682,7 +1684,9 @@ static void
mail_display_destroy (GtkObject *object)
{
MailDisplay *mail_display = MAIL_DISPLAY (object);
-
+
+ gtk_object_unref (GTK_OBJECT (mail_display->html));
+
g_free (mail_display->charset);
g_free (mail_display->selection);
g_free (mail_display->followup);
@@ -2289,6 +2293,7 @@ mail_display_new (void)
mail_display->scroll = E_SCROLL_FRAME (scroll);
mail_display->html = GTK_HTML (html);
+ gtk_object_ref (GTK_OBJECT (mail_display->html));
mail_display->last_active = NULL;
mail_display->data = g_new0 (GData *, 1);
g_datalist_init (mail_display->data);