[tracker-miners/sam/index-file-sync: 314/316] miners/fs: Clear the queue on shutdown, don't just free the data
- From: Sam Thursfield <sthursfield src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker-miners/sam/index-file-sync: 314/316] miners/fs: Clear the queue on shutdown, don't just free the data
- Date: Mon, 6 Jul 2020 11:23:57 +0000 (UTC)
commit d1bc121960dd00127d19c6bc20d5e9d73882c8ee
Author: Sam Thursfield <sam afuera me uk>
Date: Mon Apr 27 21:02:20 2020 +0200
miners/fs: Clear the queue on shutdown, don't just free the data
We don't want to maintain a list of invalid pointers. This was
harmless, until I added some code to remove temporarily indexed
data on miner-fs shutdown.
src/libtracker-miner/tracker-miner-fs.c | 5 ++--
src/libtracker-miner/tracker-priority-queue.c | 10 +++----
src/libtracker-miner/tracker-priority-queue.h | 5 ++--
.../libtracker-miner/tracker-priority-queue-test.c | 34 ----------------------
4 files changed, 9 insertions(+), 45 deletions(-)
---
diff --git a/src/libtracker-miner/tracker-miner-fs.c b/src/libtracker-miner/tracker-miner-fs.c
index c571a6447..fdedda9c9 100644
--- a/src/libtracker-miner/tracker-miner-fs.c
+++ b/src/libtracker-miner/tracker-miner-fs.c
@@ -2549,7 +2549,6 @@ tracker_miner_fs_cancel_all_tasks (TrackerMinerFS *fs)
task_pool_cancel_foreach,
NULL);
- tracker_priority_queue_foreach (priv->items,
- (GFunc) queue_event_free,
- NULL);
+ tracker_priority_queue_clear (priv->items,
+ (GFunc) queue_event_free);
}
diff --git a/src/libtracker-miner/tracker-priority-queue.c b/src/libtracker-miner/tracker-priority-queue.c
index 49e474936..25226f1c7 100644
--- a/src/libtracker-miner/tracker-priority-queue.c
+++ b/src/libtracker-miner/tracker-priority-queue.c
@@ -177,14 +177,14 @@ insert_node (TrackerPriorityQueue *queue,
}
void
-tracker_priority_queue_foreach (TrackerPriorityQueue *queue,
- GFunc func,
- gpointer user_data)
+tracker_priority_queue_clear (TrackerPriorityQueue *queue,
+ GDestroyNotify free_func)
{
g_return_if_fail (queue != NULL);
- g_return_if_fail (func != NULL);
+ g_return_if_fail (free_func != NULL);
+
+ g_queue_clear_full (&queue->queue, free_func);
- g_queue_foreach (&queue->queue, func, user_data);
}
gboolean
diff --git a/src/libtracker-miner/tracker-priority-queue.h b/src/libtracker-miner/tracker-priority-queue.h
index 0dbc9b83d..2cb1c6617 100644
--- a/src/libtracker-miner/tracker-priority-queue.h
+++ b/src/libtracker-miner/tracker-priority-queue.h
@@ -40,9 +40,8 @@ guint tracker_priority_queue_get_length (TrackerPriorityQueue *queue)
GList * tracker_priority_queue_add (TrackerPriorityQueue *queue,
gpointer data,
gint priority);
-void tracker_priority_queue_foreach (TrackerPriorityQueue *queue,
- GFunc func,
- gpointer user_data);
+void tracker_priority_queue_clear (TrackerPriorityQueue *queue,
+ GDestroyNotify free_func);
gboolean tracker_priority_queue_foreach_remove (TrackerPriorityQueue *queue,
GEqualFunc compare_func,
diff --git a/tests/libtracker-miner/tracker-priority-queue-test.c
b/tests/libtracker-miner/tracker-priority-queue-test.c
index 893ca14f9..d9d993e46 100644
--- a/tests/libtracker-miner/tracker-priority-queue-test.c
+++ b/tests/libtracker-miner/tracker-priority-queue-test.c
@@ -138,38 +138,6 @@ test_priority_queue_find (void)
tracker_priority_queue_unref (queue);
}
-static void
-foreach_testing_cb (G_GNUC_UNUSED gpointer data,
- gpointer user_data)
-{
- gint *counter = (gint *)user_data;
- (*counter) += 1;
-}
-
-static void
-test_priority_queue_foreach (void)
-{
- TrackerPriorityQueue *queue;
- gint counter = 0;
-
- queue = tracker_priority_queue_new ();
-
- tracker_priority_queue_add (queue, g_strdup ("x"), 10);
- tracker_priority_queue_add (queue, g_strdup ("x"), 20);
- tracker_priority_queue_add (queue, g_strdup ("x"), 30);
-
- tracker_priority_queue_foreach (queue, foreach_testing_cb, &counter);
-
- g_assert_cmpint (counter, ==, 3);
-
- while (!tracker_priority_queue_is_empty (queue)) {
- gchar *text = (gchar *) tracker_priority_queue_pop (queue, NULL);
- g_free (text);
- }
-
- tracker_priority_queue_unref (queue);
-}
-
static void
test_priority_queue_foreach_remove (void)
{
@@ -250,8 +218,6 @@ main (int argc,
test_priority_queue_peek);
g_test_add_func ("/libtracker-miner/tracker-priority-queue/find",
test_priority_queue_find);
- g_test_add_func ("/libtracker-miner/tracker-priority-queue/foreach",
- test_priority_queue_foreach);
g_test_add_func ("/libtracker-miner/tracker-priority-queue/foreach_remove",
test_priority_queue_foreach_remove);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]