summaryrefslogtreecommitdiff
path: root/gio/gkeyfilesettingsbackend.c
diff options
context:
space:
mode:
Diffstat (limited to 'gio/gkeyfilesettingsbackend.c')
-rw-r--r--gio/gkeyfilesettingsbackend.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/gio/gkeyfilesettingsbackend.c b/gio/gkeyfilesettingsbackend.c
index 398cb053a..d5796b706 100644
--- a/gio/gkeyfilesettingsbackend.c
+++ b/gio/gkeyfilesettingsbackend.c
@@ -225,6 +225,25 @@ get_from_keyfile (GKeyfileSettingsBackend *kfsb,
if (str)
{
return_value = g_variant_parse (type, str, NULL, NULL, NULL);
+ if (return_value == NULL &&
+ g_variant_type_equal (type, G_VARIANT_TYPE_STRING) &&
+ str[0] != '\"')
+ {
+ GString *s = g_string_sized_new (strlen (str) + 2);
+ char *p = str;
+
+ g_string_append_c (s, '\"');
+ while (*p)
+ {
+ if (*p == '\"')
+ g_string_append_c (s, '\\');
+ g_string_append_c (s, *p);
+ p++;
+ }
+ g_string_append_c (s, '\"');
+ return_value = g_variant_parse (type, s->str, NULL, NULL, NULL);
+ g_string_free (s, TRUE);
+ }
g_free (str);
}