aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--composer/ChangeLog10
-rw-r--r--composer/e-msg-composer-attachment.c35
2 files changed, 36 insertions, 9 deletions
diff --git a/composer/ChangeLog b/composer/ChangeLog
index 33761d7e2e..89f7470b67 100644
--- a/composer/ChangeLog
+++ b/composer/ChangeLog
@@ -1,3 +1,13 @@
+2002-08-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * e-msg-composer-attachment.c (e_msg_composer_attachment_new):
+ Don't call new_from_mime_part() since that function now does some
+ copying of the mime part rather than simply reffing it.
+ (e_msg_composer_attachment_new_from_mime_part): Make a copy of the
+ MIME part so that if the message that this part belongs to gets
+ deleted from the the remote store, the composer will still have a
+ copy of it. Fixes bug #20308.
+
2002-07-31 Jeffrey Stedfast <fejj@ximian.com>
* e-msg-composer.c (e_msg_composer_new_with_message): Parse the
diff --git a/composer/e-msg-composer-attachment.c b/composer/e-msg-composer-attachment.c
index 7036461bbf..e0c2bd1f0f 100644
--- a/composer/e-msg-composer-attachment.c
+++ b/composer/e-msg-composer-attachment.c
@@ -216,9 +216,9 @@ e_msg_composer_attachment_new (const char *file_name,
g_free (content_id);
#endif
- new = e_msg_composer_attachment_new_from_mime_part (part);
- camel_object_unref (CAMEL_OBJECT (part));
-
+ new = gtk_type_new (e_msg_composer_attachment_get_type ());
+ new->editor_gui = NULL;
+ new->body = part;
new->size = statbuf.st_size;
new->guessed_type = TRUE;
@@ -236,17 +236,34 @@ EMsgComposerAttachment *
e_msg_composer_attachment_new_from_mime_part (CamelMimePart *part)
{
EMsgComposerAttachment *new;
-
+ CamelMimePart *mime_part;
+ CamelStream *stream;
+
g_return_val_if_fail (CAMEL_IS_MIME_PART (part), NULL);
-
+
+ stream = camel_stream_mem_new ();
+ if (camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (part), stream) == -1) {
+ camel_object_unref (stream);
+ return NULL;
+ }
+
+ camel_stream_reset (stream);
+ mime_part = camel_mime_part_new ();
+
+ if (camel_data_wrapper_construct_from_stream (CAMEL_DATA_WRAPPER (mime_part), stream) == -1) {
+ camel_object_unref (mime_part);
+ camel_object_unref (stream);
+ return NULL;
+ }
+
+ camel_object_unref (stream);
+
new = gtk_type_new (e_msg_composer_attachment_get_type ());
-
new->editor_gui = NULL;
- new->body = part;
- camel_object_ref (CAMEL_OBJECT (part));
+ new->body = mime_part;
new->guessed_type = FALSE;
new->size = 0;
-
+
return new;
}