[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
emacs-29 1469aac20d: ; * src/pgtkfns.c (parse_resource_key): Use recursi
|
From: |
Eli Zaretskii |
|
Subject: |
emacs-29 1469aac20d: ; * src/pgtkfns.c (parse_resource_key): Use recursive schema lookup |
|
Date: |
Sun, 8 Jan 2023 06:48:47 -0500 (EST) |
branch: emacs-29
commit 1469aac20d8ebcd3c5cca898b814c305278d4c27
Author: Tad Fisher <tadfisher@gmail.com>
Commit: Eli Zaretskii <eliz@gnu.org>
; * src/pgtkfns.c (parse_resource_key): Use recursive schema lookup
XDG_DATA_DIRS may consist of multiple directories, and
g_settings_schema_source_get_default composes these into a recursive
schema source. One must pass TRUE to g_settings_schema_source_lookup,
otherwise only the first directory in XDG_DATA_DIRS is searched.
It follows that in the case that the directory containing the compiled
GSettings schema for Emacs is not the first in XDG_DATA_DIRS,
parse_resource_key will not accept any resource key, which causes
pgtk_get_defaults_value and pgtk_set_defaults_value to fail.
This impacts systems that compose multiple GSettings schema sources
via XDG_DATA_DIRS, such Flatpak and NixOS.
Supporting GIO documentation for g_settings_schema_source_get_default:
> The returned source may actually consist of multiple schema sources
> from different directories, depending on which directories were given
> in `XDG_DATA_DIRS` and `GSETTINGS_SCHEMA_DIR`. For this reason, all
> lookups performed against the default source should probably be done
> recursively.
Bug#60565
Copyright-paperwork-exempt: yes
---
src/pgtkfns.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/pgtkfns.c b/src/pgtkfns.c
index 6b3a0459d3..6e5bb22375 100644
--- a/src/pgtkfns.c
+++ b/src/pgtkfns.c
@@ -1902,7 +1902,7 @@ parse_resource_key (const char *res_key, char
*setting_key)
/* check existence of setting_key */
GSettingsSchemaSource *ssrc = g_settings_schema_source_get_default ();
- GSettingsSchema *scm = g_settings_schema_source_lookup (ssrc, SCHEMA_ID,
FALSE);
+ GSettingsSchema *scm = g_settings_schema_source_lookup (ssrc, SCHEMA_ID,
TRUE);
if (!scm)
return NULL; /* *.schema.xml is not installed. */
if (!g_settings_schema_has_key (scm, setting_key))
| [Prev in Thread] |
Current Thread |
[Next in Thread] |
- emacs-29 1469aac20d: ; * src/pgtkfns.c (parse_resource_key): Use recursive schema lookup,
Eli Zaretskii <=