From: Ryan Lortie Date: Sun, 27 Jun 2010 14:11:45 +0000 (-0400) Subject: GSettings: Don't free value before using its type X-Git-Tag: 2.25.11~137 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=795d2bf8cf13d03214af3eb857d235c2917f9945;p=platform%2Fupstream%2Fglib.git 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). --- diff --git a/gio/gsettings-tool.c b/gio/gsettings-tool.c index d3501f3..04d95e0 100644 --- a/gio/gsettings-tool.c +++ b/gio/gsettings-tool.c @@ -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);