summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2020-09-08 13:42:31 +0200
committerCarlos Garnacho <carlosg@gnome.org>2020-09-16 12:44:52 +0200
commitd2f2af51a4fb5404a0778526e11e9a7c288244b9 (patch)
treeb5133a63b7483a94fbd0ebacf9d1c105ded60c66
parentb46fe81f08e21071582af5a9b85bfa5f2bad7c46 (diff)
downloadtracker-d2f2af51a4fb5404a0778526e11e9a7c288244b9.tar.gz
libtracker-fts: Avoid double conversion of data structures
We accumulate on a list, just to transform to a gchar**, just build the latter right away.
-rw-r--r--src/libtracker-fts/tracker-fts.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/libtracker-fts/tracker-fts.c b/src/libtracker-fts/tracker-fts.c
index 079d83a3c..1cb5041fe 100644
--- a/src/libtracker-fts/tracker-fts.c
+++ b/src/libtracker-fts/tracker-fts.c
@@ -38,24 +38,30 @@ int sqlite3_fts5_init ();
static gchar **
get_fts_properties (GHashTable *tables)
{
- GList *table_columns, *columns;
- gchar **property_names;
+ GList *table_columns;
+ GArray *property_names;
GList *keys, *l;
- columns = NULL;
keys = g_hash_table_get_keys (tables);
keys = g_list_sort (keys, (GCompareFunc) strcmp);
+ property_names = g_array_new (TRUE, FALSE, sizeof (gchar *));
+
for (l = keys; l; l = l->next) {
table_columns = g_hash_table_lookup (tables, l->data);
- columns = g_list_concat (columns, g_list_copy (table_columns));
+
+ while (table_columns) {
+ gchar *str;
+
+ str = g_strdup (table_columns->data);
+ g_array_append_val (property_names, str);
+ table_columns = table_columns->next;
+ }
}
- property_names = tracker_glist_to_string_list (columns);
- g_list_free (columns);
g_list_free (keys);
- return property_names;
+ return (gchar **) g_array_free (property_names, FALSE);
}
gboolean