[tracker/tracker-0.6] Bug 112133 - trackerd-11-1386.rcore.lzo crashed



commit afdc3ad118eea43fb6ced0125b4df7a3b8829fa9
Author: Carlos Garnacho <carlosg gnome org>
Date:   Thu May 21 16:00:38 2009 +0200

    Bug 112133 - trackerd-11-1386.rcore.lzo crashed
    
    Normalize mount point paths in TrackerProcessor, so they're removed properly,
    and the processor doesn't think there are still pending removable media to
    inspect.
---
 src/trackerd/tracker-processor.c |   29 ++++++++++++++++++++++-------
 1 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/src/trackerd/tracker-processor.c b/src/trackerd/tracker-processor.c
index 3b6ae70..e453ed5 100644
--- a/src/trackerd/tracker-processor.c
+++ b/src/trackerd/tracker-processor.c
@@ -1506,6 +1506,16 @@ crawler_finished_cb (TrackerCrawler *crawler,
 
 #ifdef HAVE_HAL
 
+static gchar *
+normalize_mount_point (const gchar *mount_point)
+{
+	if (g_str_has_suffix (mount_point, G_DIR_SEPARATOR_S)) {
+		return g_strdup (mount_point);
+	} else {
+		return g_strconcat (mount_point, G_DIR_SEPARATOR_S, NULL);
+	}
+}
+
 void
 tracker_processor_mount_point_added (TrackerProcessor *processor,
 				     const gchar      *udi,
@@ -1514,20 +1524,21 @@ tracker_processor_mount_point_added (TrackerProcessor *processor,
 	TrackerProcessorPrivate *priv;
 	TrackerStatus	         status;
 	GList                   *l;
+	gchar                   *mp;
 
 	g_return_if_fail (TRACKER_IS_PROCESSOR (processor));
 
 	priv = processor->private;
 
 	status = tracker_status_get ();
+	mp = normalize_mount_point (mount_point);
 
 	/* Add removable device to list of known devices to iterate */
-	priv->removable_devices = g_list_append (priv->removable_devices, 
-						 g_strdup (mount_point));
+	priv->removable_devices = g_list_append (priv->removable_devices, mp);
 
 	/* Remove from completed list so we don't ignore it */
-	l = g_list_find_custom (priv->removable_devices_completed, 
-				mount_point,
+	l = g_list_find_custom (priv->removable_devices_completed,
+				mp,
 				(GCompareFunc) g_strcmp0);
 
 	if (l) {
@@ -1561,16 +1572,18 @@ tracker_processor_mount_point_removed (TrackerProcessor *processor,
 	TrackerProcessorPrivate *priv;
 	GFile		        *file;
 	GList                   *l;
+	gchar                   *mp;
 
 	g_return_if_fail (TRACKER_IS_PROCESSOR (processor));
 
 	priv = processor->private;
+	mp = normalize_mount_point (mount_point);
 
 	/* Remove directory from list of iterated_removable_media, so
 	 * we don't traverse it.
 	 */
-	l = g_list_find_custom (priv->removable_devices, 
-				mount_point,
+	l = g_list_find_custom (priv->removable_devices,
+				mp,
 				(GCompareFunc) g_strcmp0);
 
 	if (l) {
@@ -1580,7 +1593,7 @@ tracker_processor_mount_point_removed (TrackerProcessor *processor,
 	}
 
 	l = g_list_find_custom (priv->removable_devices_completed, 
-				mount_point,
+				mp,
 				(GCompareFunc) g_strcmp0);
 
 	if (l) {
@@ -1595,6 +1608,8 @@ tracker_processor_mount_point_removed (TrackerProcessor *processor,
 	file = g_file_new_for_path (mount_point);
 	tracker_monitor_remove_recursively (priv->monitor, file);
 	g_object_unref (file);
+
+	g_free (mp);
 }
 
 #endif /* HAVE_HAL */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]