mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-07-14 14:25:13 +02: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:
@ -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);
|
||||
|
Reference in New Issue
Block a user