[tracker] libtracker-data: Ignore duplicate rdf:type statements



commit 8b0fbd90c015f027ef40a6f5f74ef75f10db0a04
Author: Jürg Billeter <j bitron ch>
Date:   Mon Sep 7 17:23:05 2009 +0200

    libtracker-data: Ignore duplicate rdf:type statements

 src/libtracker-data/tracker-data-update.c |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-update.c b/src/libtracker-data/tracker-data-update.c
index 49616f1..0455d46 100644
--- a/src/libtracker-data/tracker-data-update.c
+++ b/src/libtracker-data/tracker-data-update.c
@@ -515,6 +515,8 @@ cache_create_service_decomposed (TrackerClass           *cl)
 	TrackerDBInterface *iface;
 	TrackerClass       **super_classes;
 	GValue              gvalue = { 0 };
+	gint                i;
+	const gchar        *class_uri;
 
 	iface = tracker_db_manager_get_db_interface ();
 
@@ -525,7 +527,16 @@ cache_create_service_decomposed (TrackerClass           *cl)
 		super_classes++;
 	}
 
-	g_ptr_array_add (update_buffer.types, g_strdup (tracker_class_get_uri (cl)));
+	class_uri = tracker_class_get_uri (cl);
+
+	for (i = 0; i < update_buffer.types->len; i++) {
+		if (strcmp (g_ptr_array_index (update_buffer.types, i), class_uri) == 0) {
+			/* ignore duplicate statement */
+			return;
+		}
+	}
+
+	g_ptr_array_add (update_buffer.types, g_strdup (class_uri));
 
 	g_value_init (&gvalue, G_TYPE_INT);
 



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