[tracker] libtracker-common: Fixed inconsistent GSList returns and mem leak
- From: Martyn James Russell <mr src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker] libtracker-common: Fixed inconsistent GSList returns and mem leak
- Date: Thu, 8 Oct 2009 16:35:00 +0000 (UTC)
commit bee99507a201a077952718d3d24384e7e56698bd
Author: Martyn Russell <martyn lanedo com>
Date: Thu Oct 8 16:45:10 2009 +0100
libtracker-common: Fixed inconsistent GSList returns and mem leak
The API was inconsistent here. Some API calls returned a GSList with
pointers and some returned a GSList with newly allocated pointers. Now
everything is newly allocated.
The return value in tracker-miner-files.c is now freed when getting
removable devices too.
src/libtracker-common/tracker-storage-hal.c | 2 +-
src/tracker-miner-fs/tracker-miner-files.c | 4 ++++
src/tracker-store/tracker-main.c | 3 ++-
3 files changed, 7 insertions(+), 2 deletions(-)
---
diff --git a/src/libtracker-common/tracker-storage-hal.c b/src/libtracker-common/tracker-storage-hal.c
index 75091da..057918a 100644
--- a/src/libtracker-common/tracker-storage-hal.c
+++ b/src/libtracker-common/tracker-storage-hal.c
@@ -1012,7 +1012,7 @@ tracker_storage_get_removable_device_udis (TrackerStorage *storage)
info = node->data;
if (info->removable) {
- udis = g_slist_prepend (udis, (gpointer) udi);
+ udis = g_slist_prepend (udis, g_strdup (udi));
}
}
diff --git a/src/tracker-miner-fs/tracker-miner-files.c b/src/tracker-miner-fs/tracker-miner-files.c
index cde6de9..27bc835 100644
--- a/src/tracker-miner-fs/tracker-miner-files.c
+++ b/src/tracker-miner-fs/tracker-miner-files.c
@@ -562,6 +562,7 @@ init_mount_points (TrackerMinerFiles *miner)
g_hash_table_replace (volumes, removable_device_urn, GINT_TO_POINTER (state));
}
+ g_slist_foreach (udis, (GFunc) g_free, NULL);
g_slist_free (udis);
#endif
@@ -682,6 +683,9 @@ initialize_removable_devices (TrackerMinerFiles *mf)
TRUE);
g_object_unref (file);
}
+
+ g_slist_foreach (mounts, (GFunc) g_free, NULL);
+ g_slist_free (mounts);
}
}
diff --git a/src/tracker-store/tracker-main.c b/src/tracker-store/tracker-main.c
index f43a801..447258c 100644
--- a/src/tracker-store/tracker-main.c
+++ b/src/tracker-store/tracker-main.c
@@ -600,7 +600,8 @@ set_up_mount_points (TrackerStorage *hal)
l = l->next;
}
- g_list_free (roots);
+ g_slist_foreach (roots, (GFunc) g_free, NULL);
+ g_slist_free (roots);
*/
/* Merging: tracker-0.6 appears to have code here that we don't have
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]