[tracker] libtracker-common: Fixed inconsistent GSList returns and mem leak



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]