diff options
-rw-r--r-- | camel/ChangeLog | 13 | ||||
-rw-r--r-- | camel/camel-folder-summary.c | 14 | ||||
-rw-r--r-- | camel/providers/mbox/camel-mbox-folder.c | 11 |
3 files changed, 30 insertions, 8 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog index 8249df97f2..e615c3917f 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,3 +1,16 @@ +2000-05-11 <notzed@helixcode.com> + + * camel-folder-summary.c (camel_folder_summary_finalise): Free + summary items and charset filters. + +2000-05-10 <notzed@helixcode.com> + + * camel-folder-summary.c (camel_folder_summary_finalise): Don't + free stuff in p, after we've free'd p. + + * providers/mbox/camel-mbox-folder.c (mbox_append_message): Unref + the stream we created for appending. + 2000-05-10 Jeffrey Stedfast <fejj@stampede.org> * providers/smtp/camel-smtp-transport.c: (camel_smtp_transport_class_init): diff --git a/camel/camel-folder-summary.c b/camel/camel-folder-summary.c index bdca6e677c..516f9335bd 100644 --- a/camel/camel-folder-summary.c +++ b/camel/camel-folder-summary.c @@ -167,6 +167,12 @@ camel_folder_summary_init (CamelFolderSummary *s) s->messages_uid = g_hash_table_new(g_str_hash, g_str_equal); } +static void free_o_name(void *key, void *value, void *data) +{ + gtk_object_unref((GtkObject *)value); + g_free(key); +} + static void camel_folder_summary_finalise (GtkObject *obj) { @@ -175,14 +181,12 @@ camel_folder_summary_finalise (GtkObject *obj) p = _PRIVATE(obj); - /* FIXME: free contents */ + camel_folder_summary_clear(s); g_ptr_array_free(s->messages, TRUE); - g_hash_table_destroy(s->messages_uid); - /* FIXME: free contents */ + g_hash_table_foreach(p->filter_charset, free_o_name, 0); g_hash_table_destroy(p->filter_charset); - g_free(p); if (p->filter_index) gtk_object_unref ((GtkObject *)p->filter_index); @@ -193,6 +197,8 @@ camel_folder_summary_finalise (GtkObject *obj) if (p->filter_save) gtk_object_unref ((GtkObject *)p->filter_save); + g_free(p); + ((GtkObjectClass *)(camel_folder_summary_parent))->finalize((GtkObject *)obj); } diff --git a/camel/providers/mbox/camel-mbox-folder.c b/camel/providers/mbox/camel-mbox-folder.c index c38951a74d..05d00c608e 100644 --- a/camel/providers/mbox/camel-mbox-folder.c +++ b/camel/providers/mbox/camel-mbox-folder.c @@ -1,4 +1,4 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; fill-column: 160 -*- */ /* camel-mbox-folder.c : Abstract class for an email folder */ /* @@ -744,15 +744,17 @@ mbox_append_message (CamelFolder *folder, CamelMimeMessage *message, CamelExcept filter_stream = (CamelStream *)camel_stream_filter_new_with_stream(output_stream); filter_from = (CamelMimeFilter *)camel_mime_filter_from_new(); camel_stream_filter_add((CamelStreamFilter *)filter_stream, filter_from); - camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (message), - filter_stream, ex); + camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (message), filter_stream, ex); if (!camel_exception_is_set (ex)) camel_stream_flush (filter_stream, ex); if (camel_exception_is_set (ex)) goto fail; + /* filter stream ref's the output stream itself, so we need to unref it too */ + gtk_object_unref (GTK_OBJECT (filter_from)); gtk_object_unref (GTK_OBJECT (filter_stream)); + gtk_object_unref (GTK_OBJECT (output_stream)); /* force a summary update - will only update from the new position, if it can */ camel_mbox_summary_update(mbox_folder->summary, seek); @@ -771,7 +773,8 @@ fail: if (filter_stream) { /*camel_stream_close (filter_stream);*/ gtk_object_unref ((GtkObject *)filter_stream); - } else if (output_stream) + } + if (output_stream) gtk_object_unref ((GtkObject *)output_stream); /* make sure the file isn't munged by us */ |