[glib] Report more useful errors from g_settings_set_value



commit bc793255bc75300bfa96bfd842343c26af8b0744
Author: Matthias Clasen <mclasen redhat com>
Date:   Fri Nov 5 09:31:36 2010 -0400

    Report more useful errors from g_settings_set_value

 gio/gsettings.c |   24 ++++++++++++++++++++++--
 1 files changed, 22 insertions(+), 2 deletions(-)
---
diff --git a/gio/gsettings.c b/gio/gsettings.c
index 9fde642..04baac5 100644
--- a/gio/gsettings.c
+++ b/gio/gsettings.c
@@ -1458,8 +1458,28 @@ g_settings_set_value (GSettings   *settings,
   g_return_val_if_fail (key != NULL, FALSE);
 
   g_settings_get_key_info (&info, settings, key);
-  g_return_val_if_fail (g_settings_type_check (&info, value), FALSE);
-  g_return_val_if_fail (g_settings_key_info_range_check (&info, value), FALSE);
+
+  if (!g_settings_type_check (&info, value))
+    {
+      g_critical ("g_settings_set_value: key '%s' in '%s' expects type '%s', but a GVariant of type '%s' was given",
+                  key,
+                  settings->priv->schema_name,
+                  g_variant_type_peek_string (info.type),
+                  g_variant_get_type_string (value));
+
+        return FALSE;
+      }
+
+  if (!g_settings_key_info_range_check (&info, value))
+    {
+      g_warning ("gsettings_set_value: value for key '%s' in schema '%s' "
+                 "is outside of valid range",
+                 key,
+                 settings->priv->schema_name);
+
+        return FALSE;
+    }
+
   g_settings_free_key_info (&info);
 
   return g_settings_write_to_backend (&info, value);



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