From 1d4100c58a6a4506986ea22dc4cf6dbfe666ede1 Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Thu, 4 Oct 2001 01:53:36 +0000 Subject: Make sure to unref the message object so we don't leak it or any 2001-10-03 Jeffrey Stedfast * e-msg-composer.c (autosave_save_draft): Make sure to unref the message object so we don't leak it or any references to attachments (child mime parts). * e-msg-composer-attachment.c (e_msg_composer_attachment_new): Unref the mime part after passing it along to new_from_mime_part. svn path=/trunk/; revision=13402 --- composer/ChangeLog | 9 +++++++++ composer/e-msg-composer-attachment.c | 7 ++++--- composer/e-msg-composer.c | 14 +++++++++----- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/composer/ChangeLog b/composer/ChangeLog index 29c1f2c167..ab94b1509d 100644 --- a/composer/ChangeLog +++ b/composer/ChangeLog @@ -1,3 +1,12 @@ +2001-10-03 Jeffrey Stedfast + + * e-msg-composer.c (autosave_save_draft): Make sure to unref the + message object so we don't leak it or any references to + attachments (child mime parts). + + * e-msg-composer-attachment.c (e_msg_composer_attachment_new): + Unref the mime part after passing it along to new_from_mime_part. + 2001-10-02 Jeffrey Stedfast * e-msg-composer.c (save_draft): Pass an empty flags argument to diff --git a/composer/e-msg-composer-attachment.c b/composer/e-msg-composer-attachment.c index 9231137317..b6085b6d17 100644 --- a/composer/e-msg-composer-attachment.c +++ b/composer/e-msg-composer-attachment.c @@ -63,7 +63,7 @@ destroy (GtkObject *object) EMsgComposerAttachment *attachment; attachment = E_MSG_COMPOSER_ATTACHMENT (object); - + camel_object_unref (CAMEL_OBJECT (attachment->body)); if (attachment->pixbuf_cache != NULL) gdk_pixbuf_unref (attachment->pixbuf_cache); @@ -193,7 +193,7 @@ e_msg_composer_attachment_new (const gchar *file_name, camel_mime_part_set_filename (part, filename); g_free (filename); - + #if 0 /* Note: Outlook 2002 is broken with respect to Content-Ids on non-multipart/related parts, so as an interoperability @@ -206,6 +206,7 @@ e_msg_composer_attachment_new (const gchar *file_name, #endif new = e_msg_composer_attachment_new_from_mime_part (part); + camel_object_unref (CAMEL_OBJECT (part)); new->size = statbuf.st_size; new->guessed_type = TRUE; @@ -346,7 +347,7 @@ ok_cb (GtkWidget *widget, str = e_utf8_gtk_entry_get_text (dialog_data->mime_type_entry); camel_mime_part_set_content_type (attachment->body, str); - + camel_data_wrapper_set_mime_type ( camel_medium_get_content_object (CAMEL_MEDIUM (attachment->body)), str); g_free (str); diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c index d8cf2cb397..fda86508ed 100644 --- a/composer/e-msg-composer.c +++ b/composer/e-msg-composer.c @@ -1022,7 +1022,7 @@ static AutosaveManager *am = NULL; static gboolean autosave_save_draft (EMsgComposer *composer) { - CamelMimeMessage *msg; + CamelMimeMessage *message; CamelStream *stream; char *file; gint fd; @@ -1037,21 +1037,23 @@ autosave_save_draft (EMsgComposer *composer) return FALSE; } - msg = e_msg_composer_get_message_draft (composer); + message = e_msg_composer_get_message_draft (composer); - if (msg == NULL) { + if (message == NULL) { e_notice (GTK_WINDOW (composer), GNOME_MESSAGE_BOX_ERROR, _("Unable to retrieve message from editor")); return FALSE; } if (lseek (fd, (off_t)0, SEEK_SET) == -1) { + camel_object_unref (CAMEL_OBJECT (message)); e_notice (GTK_WINDOW (composer), GNOME_MESSAGE_BOX_ERROR, _("Unable to seek on file: %s\n%s"), file, g_strerror (errno)); return FALSE; } if (ftruncate (fd, (off_t)0) == -1) { + camel_object_unref (CAMEL_OBJECT (message)); e_notice (GTK_WINDOW (composer), GNOME_MESSAGE_BOX_ERROR, _("Unable to truncate file: %s\n%s"), file, g_strerror (errno)); return FALSE; @@ -1059,7 +1061,7 @@ autosave_save_draft (EMsgComposer *composer) /* this does an lseek so we don't have to */ stream = camel_stream_fs_new_with_fd (fd); - if (camel_data_wrapper_write_to_stream ((CamelDataWrapper *)msg, stream) == -1 + if (camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (message), stream) == -1 || camel_stream_flush (CAMEL_STREAM (stream)) == -1) { e_notice (GTK_WINDOW (composer), GNOME_MESSAGE_BOX_ERROR, _("Error autosaving message: %s\n %s"), file, strerror(errno)); @@ -1070,7 +1072,9 @@ autosave_save_draft (EMsgComposer *composer) /* set the fd to -1 in the stream so camel doesn't close it we want to keep it open */ CAMEL_STREAM_FS (stream)->fd = -1; camel_object_unref (CAMEL_OBJECT (stream)); - + + camel_object_unref (CAMEL_OBJECT (message)); + return success; } -- cgit v1.2.3