mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-03 17:56:17 +01:00
GSettings: Don't free value before using its type
Fix a bug where the type from g_variant_get_type() was used after freeing the variant. This works for base types (since they are cached and live forever) but not for arrays (where the bug was first seen).
This commit is contained in:
parent
87fd38bc4d
commit
795d2bf8cf
@ -157,7 +157,7 @@ handle_set (gint *argc,
|
||||
gchar *key;
|
||||
gchar *value;
|
||||
GSettings *settings;
|
||||
GVariant *v;
|
||||
GVariant *v, *default_v;
|
||||
const GVariantType *type;
|
||||
GOptionContext *context;
|
||||
GOptionEntry entries[] = {
|
||||
@ -201,12 +201,12 @@ handle_set (gint *argc,
|
||||
else
|
||||
settings = g_settings_new (schema);
|
||||
|
||||
v = g_settings_get_value (settings, key);
|
||||
type = g_variant_get_type (v);
|
||||
g_variant_unref (v);
|
||||
default_v = g_settings_get_value (settings, key);
|
||||
type = g_variant_get_type (default_v);
|
||||
|
||||
error = NULL;
|
||||
v = g_variant_parse (type, value, NULL, NULL, &error);
|
||||
g_variant_unref (default_v);
|
||||
if (v == NULL)
|
||||
{
|
||||
g_printerr ("%s\n", error->message);
|
||||
|
Loading…
Reference in New Issue
Block a user