diff --git a/camel/camel-folder-summary.c b/camel/camel-folder-summary.c
index 47fc5e6..fde383a 100644
--- a/camel/camel-folder-summary.c
+++ b/camel/camel-folder-summary.c
@@ -2350,11 +2350,12 @@ summary_remove_uid (CamelFolderSummary *s, const gchar *uid)
 void
 camel_folder_summary_remove (CamelFolderSummary *s, CamelMessageInfo *info)
 {
-
+	gboolean found;
 	gint ret;
 
 	CAMEL_SUMMARY_LOCK(s, summary_lock);
 
+	found = g_hash_table_lookup (s->loaded_infos, camel_message_info_uid (info)) != NULL;
 	g_hash_table_remove (s->loaded_infos, camel_message_info_uid(info));
 	ret = summary_remove_uid (s, camel_message_info_uid(info));
 
@@ -2365,7 +2366,8 @@ camel_folder_summary_remove (CamelFolderSummary *s, CamelMessageInfo *info)
 	if (!ret && camel_db_delete_uid (s->folder->parent_store->cdb_w, s->folder->full_name, camel_message_info_uid(info), NULL) != 0)
 		return;
 
-	camel_message_info_free(info);
+	if (found)
+		camel_message_info_free (info);
 }
 
 /**
diff --git a/camel/providers/local/camel-maildir-folder.c b/camel/providers/local/camel-maildir-folder.c
index 81d5553..3e72a94 100644
--- a/camel/providers/local/camel-maildir-folder.c
+++ b/camel/providers/local/camel-maildir-folder.c
@@ -408,7 +408,6 @@ maildir_transfer_messages_to (CamelFolder *source, GPtrArray *uids, CamelFolder
 			d_filename = g_strdup_printf ("%s/cur/%s", df->folder_path, tmp);
 			g_free (tmp);
 			s_filename = g_strdup_printf("%s/cur/%s", lf->folder_path, camel_maildir_info_filename (mdi));
-			camel_message_info_free (info);
 
 			if (g_rename (s_filename, d_filename) != 0) {
 				if (errno == EXDEV) {
@@ -424,6 +423,7 @@ maildir_transfer_messages_to (CamelFolder *source, GPtrArray *uids, CamelFolder
 				camel_folder_summary_remove (source->summary, info);
 			}
 
+			camel_message_info_free (info);
 			g_free (s_filename);
 			g_free (d_filename);
 		}
diff --git a/camel/providers/local/camel-mbox-summary.c b/camel/providers/local/camel-mbox-summary.c
index 5b422ac..242d13b 100644
--- a/camel/providers/local/camel-mbox-summary.c
+++ b/camel/providers/local/camel-mbox-summary.c
@@ -946,6 +946,7 @@ mbox_summary_sync_quick(CamelMboxSummary *mbs, gboolean expunge, CamelFolderChan
 		info->info.info.flags &= 0xffff;
 		info->info.info.dirty = TRUE;
 		camel_message_info_free((CamelMessageInfo *)info);
+		info = NULL;
 	}
 
 	d(printf("Closing folders\n"));
@@ -1248,6 +1249,7 @@ camel_mbox_summary_sync_mbox(CamelMboxSummary *cls, guint32 flags, CamelFolderCh
 				camel_folder_summary_touch(s);
 			}
 			camel_message_info_free((CamelMessageInfo *)info);
+			info = NULL;
 		}
 	}
 
