First, correct a rather dubious case of accessing a GSettingsSchemaKey
after clearing it. This was technically okay because only the key name
was accessed (and it is not owned by the struct) but it looks very
wrong.
Second, have g_settings_backend_write() sink the passed in GVariant*.
Not all backends get this right, and I'm starting to like the pattern of
virtual function wrappers being responsible for sinking the parameters
that they are documented as consuming.
GVariant *value)
{
GSettingsSchemaKey skey;
+ gboolean success;
g_return_val_if_fail (G_IS_SETTINGS (settings), FALSE);
g_return_val_if_fail (key != NULL, FALSE);
return FALSE;
}
+ success = g_settings_write_to_backend (settings, &skey, value);
g_settings_schema_key_clear (&skey);
- return g_settings_write_to_backend (settings, &skey, value);
+ return success;
}
/**
GVariant *value,
gpointer origin_tag)
{
- return G_SETTINGS_BACKEND_GET_CLASS (backend)
+ gboolean success;
+
+ g_variant_ref_sink (value);
+ success = G_SETTINGS_BACKEND_GET_CLASS (backend)
->write (backend, key, value, origin_tag);
+ g_variant_unref (value);
+
+ return success;
}
/*< private >