mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-25 15:06:14 +01:00
GSettingsSchema: alter our 'reverse' technology
Instead of building a reversed linked list by prepending in order and then reversing it at the end, prepend in reverse by iterating backwards through the directories (to get a list in-order when we're done).
This commit is contained in:
parent
104f7353a7
commit
5ec84e8056
@ -47,18 +47,25 @@ initialise_schema_sources (void)
|
||||
{
|
||||
static gsize initialised;
|
||||
|
||||
/* need a separate variable because 'schema_sources' may legitimately
|
||||
* be null if we have zero valid schema sources
|
||||
*/
|
||||
if G_UNLIKELY (g_once_init_enter (&initialised))
|
||||
{
|
||||
const gchar * const *dir;
|
||||
const gchar * const *dirs;
|
||||
const gchar *path;
|
||||
gint i;
|
||||
|
||||
for (dir = g_get_system_data_dirs (); *dir; dir++)
|
||||
/* iterate in reverse: count up, then count down */
|
||||
dirs = g_get_system_data_dirs ();
|
||||
for (i = 0; dirs[i]; i++);
|
||||
|
||||
while (i--)
|
||||
{
|
||||
gchar *filename;
|
||||
GvdbTable *table;
|
||||
|
||||
filename = g_build_filename (*dir, "glib-2.0", "schemas",
|
||||
"gschemas.compiled", NULL);
|
||||
filename = g_build_filename (dirs[i], "glib-2.0", "schemas", "gschemas.compiled", NULL);
|
||||
table = gvdb_table_new (filename, TRUE, NULL);
|
||||
|
||||
if (table != NULL)
|
||||
@ -67,8 +74,6 @@ initialise_schema_sources (void)
|
||||
g_free (filename);
|
||||
}
|
||||
|
||||
schema_sources = g_slist_reverse (schema_sources);
|
||||
|
||||
if ((path = g_getenv ("GSETTINGS_SCHEMA_DIR")) != NULL)
|
||||
{
|
||||
gchar *filename;
|
||||
|
Loading…
Reference in New Issue
Block a user