GSettingsBackend: allow floating refs from read()
authorRyan Lortie <desrt@desrt.ca>
Thu, 22 Dec 2011 05:24:20 +0000 (00:24 -0500)
committerRyan Lortie <desrt@desrt.ca>
Thu, 22 Dec 2011 05:24:20 +0000 (00:24 -0500)
Use g_variant_take_ref() to allow for backends to return floating
GVariant instances from their read() implementations.

gio/gsettingsbackend.c

index 6ea88d2..6075d7f 100644 (file)
@@ -733,6 +733,9 @@ g_settings_backend_read (GSettingsBackend   *backend,
   value = G_SETTINGS_BACKEND_GET_CLASS (backend)
     ->read (backend, key, expected_type, default_value);
 
+  if (value != NULL)
+    value = g_variant_take_ref (value);
+
   if G_UNLIKELY (value && !g_variant_is_of_type (value, expected_type))
     {
       g_variant_unref (value);