From: Tad Fisher <tadfisher@gmail.com>
To: 60565@debbugs.gnu.org
Subject: bug#60565: [PATCH] src/pgtkfns.c (parse_resource_key): Use recursive schema lookup
Date: Thu, 5 Jan 2023 01:58:47 +0000 [thread overview]
Message-ID: <CA+BndfuuNRTzM+xHRoJ0TyStgMvH8owLaxXOC88SB9H=1nzgzg@mail.gmail.com> (raw)
[-- Attachment #1: 0001-src-pgtkfns.c-parse_resource_key-Use-recursive-schem.patch --]
[-- Type: text/x-patch, Size: 1963 bytes --]
From 8e2cf80593dd78030929f96f0f1a3e1a325428a4 Mon Sep 17 00:00:00 2001
From: Tad Fisher <tadfisher@gmail.com>
Date: Wed, 4 Jan 2023 13:40:17 -0800
Subject: [PATCH] ; * 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.
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 6b3a0459d36..6e5bb22375a 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))
--
2.38.1
next reply other threads:[~2023-01-05 1:58 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-05 1:58 Tad Fisher [this message]
2023-01-07 9:12 ` bug#60565: [PATCH] src/pgtkfns.c (parse_resource_key): Use recursive schema lookup Eli Zaretskii
2023-01-07 11:04 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-01-07 11:11 ` Eli Zaretskii
2023-01-08 1:14 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-01-08 11:49 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CA+BndfuuNRTzM+xHRoJ0TyStgMvH8owLaxXOC88SB9H=1nzgzg@mail.gmail.com' \
--to=tadfisher@gmail.com \
--cc=60565@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).