Make sure to unref the message object so we don't leak it or any

2001-10-03  Jeffrey Stedfast  <fejj@ximian.com>

	* 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
This commit is contained in:
Jeffrey Stedfast
2001-10-04 01:53:36 +00:00
committed by Jeffrey Stedfast
parent 1d12357e61
commit 1d4100c58a
3 changed files with 22 additions and 8 deletions

View File

@ -1,3 +1,12 @@
2001-10-03 Jeffrey Stedfast <fejj@ximian.com>
* 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 <fejj@ximian.com>
* e-msg-composer.c (save_draft): Pass an empty flags argument to

View File

@ -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);

View File

@ -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;
}