[gtk+] gtksettings: fix critical warning



commit 7ac337a9af03b58723cc7e13121e09850de24f7f
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Wed Feb 3 15:48:52 2016 +0200

    gtksettings: fix critical warning
    
    Commit 5186aeb90f52c941a2642b04ebfb54e9d8f8ea11 introduced critical
    warning - g_value_copy: assertion 'g_value_type_compatible (...)' failed.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=761381

 gtk/gtksettings.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtksettings.c b/gtk/gtksettings.c
index 339dfc2..7560fa9 100644
--- a/gtk/gtksettings.c
+++ b/gtk/gtksettings.c
@@ -3435,16 +3435,20 @@ gtk_settings_reset_property (GtkSettings *settings,
 {
   GtkSettingsPrivate *priv = settings->priv;
   GParamSpec *pspec;
+  GtkRcPropertyParser parser;
   GValue *value;
+  GValue tmp_value = G_VALUE_INIT;
 
   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (settings), name);
 
   g_return_if_fail (pspec != NULL);
 
+  parser = (GtkRcPropertyParser) g_param_spec_get_qdata (pspec, quark_property_parser);
   value = g_param_spec_get_qdata (pspec, g_quark_from_string (name));
 
-  if (value != NULL)
-    g_value_copy (value, &priv->property_values[pspec->param_id - 1].value);
+  g_value_init (&tmp_value, G_PARAM_SPEC_VALUE_TYPE (pspec));
+  if (value && _gtk_settings_parse_convert (parser, value, pspec, &tmp_value))
+    g_value_copy (&tmp_value, &priv->property_values[pspec->param_id - 1].value);
   else
     g_param_value_set_default (pspec, &priv->property_values[pspec->param_id - 1].value);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]