[dconf-editor/gnome-3-18] dconf-editor: Don't crash when encountering open ranges



commit 51c25f1c78c81c65d26029d632fe9b10c73e7dcb
Author: Jan Alexander Steffens (heftig) <jan steffens gmail com>
Date:   Wed Apr 1 23:06:58 2015 +0200

    dconf-editor: Don't crash when encountering open ranges
    
    Ranges can have either min or max unset. Handle this case properly.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=731674

 editor/dconf-view.vala   |   17 ++++++++---------
 editor/dconf-window.vala |   14 ++++++--------
 2 files changed, 14 insertions(+), 17 deletions(-)
---
diff --git a/editor/dconf-view.vala b/editor/dconf-view.vala
index 11fb2a5..0446405 100644
--- a/editor/dconf-view.vala
+++ b/editor/dconf-view.vala
@@ -72,18 +72,17 @@ private class KeyValueRenderer: Gtk.CellRenderer
             case "d":
                 spin_renderer.text = key.value.print(false);
                 var v = get_variant_as_double(key.value);
-                double min = 0.0, max = 0.0;
+                Variant min = null, max = null;
                 if (key.has_schema && key.schema.range != null)
                 {
-                    min = get_variant_as_double(key.schema.range.min);
-                    max = get_variant_as_double(key.schema.range.max);
+                    min = key.schema.range.min;
+                    max = key.schema.range.max;
                 }
-                else
-                {
-                    min = get_variant_as_double(key.get_min());
-                    max = get_variant_as_double(key.get_max());
-                }
-                spin_renderer.adjustment = new Gtk.Adjustment(v, min, max, 1, 0, 0);
+                if (min == null)
+                    min = key.get_min ();
+                if (max == null)
+                    max = key.get_max ();
+                spin_renderer.adjustment = new Gtk.Adjustment (v, get_variant_as_double (min), 
get_variant_as_double (max), 1, 0, 0);
                 spin_renderer.digits = 0;
                 if (key.type_string == "d")
                 {
diff --git a/editor/dconf-window.vala b/editor/dconf-window.vala
index 1e4eba4..6d1505c 100644
--- a/editor/dconf-window.vala
+++ b/editor/dconf-window.vala
@@ -115,30 +115,28 @@ class DConfWindow : ApplicationWindow
         case "u":
         case "x":
         case "t":
-            Variant min, max;
+            Variant min = null, max = null;
             if (key.schema.range != null)
             {
                 min = key.schema.range.min;
                 max = key.schema.range.max;
             }
-            else
-            {
+            if (min == null)
                 min = key.get_min ();
+            if (max == null)
                 max = key.get_max ();
-            }
             return _("Integer [%s..%s]").printf (min.print (false), max.print (false));
         case "d":
-            Variant min, max;
+            Variant min = null, max = null;
             if (key.schema.range != null)
             {
                 min = key.schema.range.min;
                 max = key.schema.range.max;
             }
-            else
-            {
+            if (min == null)
                 min = key.get_min ();
+            if (max == null)
                 max = key.get_max ();
-            }
             return _("Double [%s..%s]").printf (min.print (false), max.print (false));
         case "b":
             return _("Boolean");


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