mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-25 23:16: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;
|
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))
|
if G_UNLIKELY (g_once_init_enter (&initialised))
|
||||||
{
|
{
|
||||||
const gchar * const *dir;
|
const gchar * const *dirs;
|
||||||
const gchar *path;
|
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;
|
gchar *filename;
|
||||||
GvdbTable *table;
|
GvdbTable *table;
|
||||||
|
|
||||||
filename = g_build_filename (*dir, "glib-2.0", "schemas",
|
filename = g_build_filename (dirs[i], "glib-2.0", "schemas", "gschemas.compiled", NULL);
|
||||||
"gschemas.compiled", NULL);
|
|
||||||
table = gvdb_table_new (filename, TRUE, NULL);
|
table = gvdb_table_new (filename, TRUE, NULL);
|
||||||
|
|
||||||
if (table != NULL)
|
if (table != NULL)
|
||||||
@ -67,8 +74,6 @@ initialise_schema_sources (void)
|
|||||||
g_free (filename);
|
g_free (filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
schema_sources = g_slist_reverse (schema_sources);
|
|
||||||
|
|
||||||
if ((path = g_getenv ("GSETTINGS_SCHEMA_DIR")) != NULL)
|
if ((path = g_getenv ("GSETTINGS_SCHEMA_DIR")) != NULL)
|
||||||
{
|
{
|
||||||
gchar *filename;
|
gchar *filename;
|
||||||
|
Loading…
Reference in New Issue
Block a user