gsettings: Clarify ownership transfer in a few places

I was trying to debug some memory leaks in the gsettings test.
Eventually, it seems that actually they’re caused by the
GMemorySettingsBackend being cached by GIOModule — so this commit makes
no functional changes. It should make the code and documentation a bit
clearer though.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
This commit is contained in:
Philip Withnall 2019-01-23 15:15:53 +00:00
parent 9d89ed0c54
commit f829b65e51
3 changed files with 9 additions and 3 deletions

View File

@ -1137,6 +1137,8 @@ g_settings_new_full (GSettingsSchema *schema,
} }
/* Internal read/write utilities {{{1 */ /* Internal read/write utilities {{{1 */
/* @value will be sunk */
static gboolean static gboolean
g_settings_write_to_backend (GSettings *settings, g_settings_write_to_backend (GSettings *settings,
GSettingsSchemaKey *key, GSettingsSchemaKey *key,
@ -1417,7 +1419,7 @@ g_settings_set_enum (GSettings *settings,
return FALSE; return FALSE;
} }
success = g_settings_write_to_backend (settings, &skey, variant); success = g_settings_write_to_backend (settings, &skey, g_steal_pointer (&variant));
g_settings_schema_key_clear (&skey); g_settings_schema_key_clear (&skey);
return success; return success;
@ -1528,7 +1530,7 @@ g_settings_set_flags (GSettings *settings,
return FALSE; return FALSE;
} }
success = g_settings_write_to_backend (settings, &skey, variant); success = g_settings_write_to_backend (settings, &skey, g_steal_pointer (&variant));
g_settings_schema_key_clear (&skey); g_settings_schema_key_clear (&skey);
return success; return success;
@ -1672,7 +1674,7 @@ g_settings_set (GSettings *settings,
value = g_variant_new_va (format, NULL, &ap); value = g_variant_new_va (format, NULL, &ap);
va_end (ap); va_end (ap);
return g_settings_set_value (settings, key, value); return g_settings_set_value (settings, key, g_steal_pointer (&value));
} }
/** /**

View File

@ -777,6 +777,8 @@ g_settings_backend_read_user_value (GSettingsBackend *backend,
* to indicate that the affected keys have suddenly "changed back" to their * to indicate that the affected keys have suddenly "changed back" to their
* old values. * old values.
* *
* If @value has a floating reference, it will be sunk.
*
* Returns: %TRUE if the write succeeded, %FALSE if the key was not writable * Returns: %TRUE if the write succeeded, %FALSE if the key was not writable
*/ */
gboolean gboolean

View File

@ -1472,6 +1472,7 @@ g_settings_schema_key_to_enum (GSettingsSchemaKey *key,
return result; return result;
} }
/* Returns a new floating #GVariant. */
GVariant * GVariant *
g_settings_schema_key_from_enum (GSettingsSchemaKey *key, g_settings_schema_key_from_enum (GSettingsSchemaKey *key,
gint value) gint value)
@ -1511,6 +1512,7 @@ g_settings_schema_key_to_flags (GSettingsSchemaKey *key,
return result; return result;
} }
/* Returns a new floating #GVariant. */
GVariant * GVariant *
g_settings_schema_key_from_flags (GSettingsSchemaKey *key, g_settings_schema_key_from_flags (GSettingsSchemaKey *key,
guint value) guint value)