--- xfconf-4.6.1.orig/xfconfd/xfconf-backend-perchannel-xml.c +++ xfconf-4.6.1/xfconfd/xfconf-backend-perchannel-xml.c @@ -1644,7 +1644,7 @@ { XfconfChannel *channel = NULL; gchar *filename_stem, **filenames, *user_file; - gint i; + gint i, size; XfconfProperty *prop; TRACE("entering"); @@ -1669,8 +1669,12 @@ prop->name = g_strdup("/"); channel->properties = g_node_new(prop); + /* find array size, allows parsing it backward to respect xdg base + dirs' priority when merging */ + for(size = 0; filenames[size]; ++size); + /* read in system files */ - for(i = 0; filenames[i]; ++i) { + for(i = size - 1; (filenames[i]) && (i >= 0); --i) { if(user_file && !strcmp(filenames[i], user_file)) continue; xfconf_backend_perchannel_xml_merge_file(xbpx, filenames[i], TRUE,