mirror of
https://gitlab.freedesktop.org/pkg-config/pkg-config.git
synced 2026-02-04 10:40:49 +01:00
Traverse list backwards instead of copying and reversing
Walking a GSList backwards involved copying and reversing it so that the the original list could remain undisturbed. This is wasteful with a GList where we can just start at the end of the list and work backwards.
This commit is contained in:
parent
428362266e
commit
be455b79fe
1 changed files with 2 additions and 7 deletions
9
pkg.c
9
pkg.c
|
|
@ -462,13 +462,10 @@ string_list_strip_duplicates_from_back (GList *list)
|
|||
GHashTable *table;
|
||||
GList *tmp;
|
||||
GList *nodups = NULL;
|
||||
GList *reversed;
|
||||
|
||||
table = g_hash_table_new (g_str_hash, g_str_equal);
|
||||
|
||||
reversed = g_list_reverse (g_list_copy (list));
|
||||
|
||||
tmp = reversed;
|
||||
tmp = g_list_last (list);
|
||||
while (tmp != NULL)
|
||||
{
|
||||
if (g_hash_table_lookup (table, tmp->data) == NULL)
|
||||
|
|
@ -482,10 +479,8 @@ string_list_strip_duplicates_from_back (GList *list)
|
|||
debug_spew (" removing duplicate (from back) \"%s\"\n", tmp->data);
|
||||
}
|
||||
|
||||
tmp = g_list_next (tmp);
|
||||
tmp = g_list_previous (tmp);
|
||||
}
|
||||
|
||||
g_list_free (reversed);
|
||||
|
||||
g_hash_table_destroy (table);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue