[evolution-data-server] Fix few memory leaks
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Fix few memory leaks
- Date: Mon, 14 Feb 2011 18:13:24 +0000 (UTC)
commit 10aa841f3110a4f7084a35cbaaac1c211eb460e1
Author: Milan Crha <mcrha redhat com>
Date: Mon Feb 14 19:12:50 2011 +0100
Fix few memory leaks
camel/camel-folder-summary.c | 5 +++++
camel/providers/local/camel-maildir-store.c | 26 +++++++++++++++-----------
2 files changed, 20 insertions(+), 11 deletions(-)
---
diff --git a/camel/camel-folder-summary.c b/camel/camel-folder-summary.c
index b77c260..a6ac654 100644
--- a/camel/camel-folder-summary.c
+++ b/camel/camel-folder-summary.c
@@ -2035,6 +2035,9 @@ camel_folder_summary_migrate_infos (CamelFolderSummary *s)
ret = save_message_infos_to_db (s, TRUE, NULL);
if (ret != 0) {
+ g_free (record->folder_name);
+ g_free (record->bdata);
+ g_free (record);
return -1;
}
@@ -2042,6 +2045,7 @@ camel_folder_summary_migrate_infos (CamelFolderSummary *s)
ret = camel_db_write_folder_info_record (cdb, record, NULL);
camel_db_end_transaction (cdb, NULL);
+ g_free (record->folder_name);
g_free (record->bdata);
g_free (record);
@@ -2314,6 +2318,7 @@ camel_folder_summary_header_save_to_db (CamelFolderSummary *s,
camel_db_begin_transaction (cdb, NULL);
ret = camel_db_write_folder_info_record (cdb, record, error);
+ g_free (record->folder_name);
g_free (record->bdata);
g_free (record);
diff --git a/camel/providers/local/camel-maildir-store.c b/camel/providers/local/camel-maildir-store.c
index 1d01c6f..22f1867 100644
--- a/camel/providers/local/camel-maildir-store.c
+++ b/camel/providers/local/camel-maildir-store.c
@@ -484,7 +484,7 @@ maildir_dir_name_to_fullname (const gchar *dir_name)
static gint
scan_dirs (CamelStore *store,
guint32 flags,
- CamelFolderInfo *topfi,
+ CamelFolderInfo **topfi,
CamelURL *url,
GCancellable *cancellable,
GError **error)
@@ -497,8 +497,8 @@ scan_dirs (CamelStore *store,
gchar *meta_path = NULL;
folders = g_ptr_array_new ();
- if (!g_ascii_strcasecmp (topfi->full_name, "Inbox"))
- g_ptr_array_add (folders, topfi);
+ if (!g_ascii_strcasecmp ((*topfi)->full_name, "Inbox"))
+ g_ptr_array_add (folders, (*topfi));
dir = opendir (root);
if (dir == NULL) {
@@ -545,8 +545,8 @@ scan_dirs (CamelStore *store,
else
short_name++;
- if (g_ascii_strcasecmp (topfi->full_name, "Inbox") != 0
- && !g_str_has_prefix (full_name, topfi->full_name)) {
+ if (g_ascii_strcasecmp ((*topfi)->full_name, "Inbox") != 0
+ && !g_str_has_prefix (full_name, (*topfi)->full_name)) {
g_free (full_name);
continue;
@@ -564,10 +564,14 @@ scan_dirs (CamelStore *store,
closedir (dir);
if (folders->len != 0) {
- if (!g_ascii_strcasecmp (topfi->full_name, "Inbox"))
- camel_folder_info_build (folders, "", '/', TRUE);
- else
- camel_folder_info_build (folders, topfi->full_name, '/', TRUE);
+ if (!g_ascii_strcasecmp ((*topfi)->full_name, "Inbox")) {
+ *topfi = camel_folder_info_build (folders, "", '/', TRUE);
+ } else {
+ CamelFolderInfo *old_topfi = *topfi;
+
+ *topfi = camel_folder_info_build (folders, (*topfi)->full_name, '/', TRUE);
+ camel_store_free_folder_info (store, old_topfi);
+ }
res = 0;
} else
@@ -609,7 +613,7 @@ maildir_store_get_folder_info_sync (CamelStore *store,
if (top == NULL || top[0] == 0) {
/* create a dummy "." parent inbox, use to scan, then put back at the top level */
fi = scan_fi(store, flags, url, "Inbox", _("Inbox"), cancellable);
- if (scan_dirs (store, flags, fi, url, cancellable, error) == -1)
+ if (scan_dirs (store, flags, &fi, url, cancellable, error) == -1)
goto fail;
fi->flags |= CAMEL_FOLDER_SYSTEM|CAMEL_FOLDER_TYPE_INBOX;
@@ -620,7 +624,7 @@ maildir_store_get_folder_info_sync (CamelStore *store,
const gchar *name = strrchr (top, '/');
fi = scan_fi (store, flags, url, top, name?name+1:top, cancellable);
- if (scan_dirs (store, flags, fi, url, cancellable, error) == -1)
+ if (scan_dirs (store, flags, &fi, url, cancellable, error) == -1)
goto fail;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]