From 842c59a4b64dea1159ac4eb48ece63b1007d2f26 Mon Sep 17 00:00:00 2001 From: Philippe Normand Date: Thu, 10 Mar 2022 18:22:49 +0000 Subject: [PATCH] uri: Build doubly-linked list by prepending items As outlined in the API documentation, g_list_append() iterates over the whole list, which can quickly introduce performance issues when the list becomes very big, such as for data URIs for instance. Part-of: --- subprojects/gstreamer/gst/gsturi.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/subprojects/gstreamer/gst/gsturi.c b/subprojects/gstreamer/gst/gsturi.c index de613658cc..d3501a8360 100644 --- a/subprojects/gstreamer/gst/gsturi.c +++ b/subprojects/gstreamer/gst/gsturi.c @@ -1315,7 +1315,7 @@ _gst_uri_string_to_list (const gchar * str, const gchar * sep, gboolean convert, for (next_elem = split_str; *next_elem; next_elem += 1) { gchar *elem = *next_elem; if (*elem == '\0') { - new_list = g_list_append (new_list, NULL); + new_list = g_list_prepend (new_list, NULL); } else { if (convert && !unescape) { gchar *next_sep; @@ -1331,7 +1331,7 @@ _gst_uri_string_to_list (const gchar * str, const gchar * sep, gboolean convert, g_free (elem); elem = *next_elem; } - new_list = g_list_append (new_list, g_strdup (elem)); + new_list = g_list_prepend (new_list, g_strdup (elem)); } } } @@ -1340,7 +1340,7 @@ _gst_uri_string_to_list (const gchar * str, const gchar * sep, gboolean convert, g_free (pct_sep); } - return new_list; + return g_list_reverse (new_list); } static GHashTable *