Merge branch 'new_patch' into 'master'

gobject: Allow passing %NULL for @data in g_object_remove_toggle_ref

Closes #817

See merge request GNOME/glib!2117
This commit is contained in:
Philip Withnall 2021-06-01 14:31:13 +00:00
commit 94e90422b9
2 changed files with 5 additions and 3 deletions

View File

@ -3319,7 +3319,8 @@ g_object_add_toggle_ref (GObject *object,
* @notify: a function to call when this reference is the
* last reference to the object, or is no longer
* the last reference.
* @data: data to pass to @notify
* @data: (nullable): data to pass to @notify, or %NULL to
* match any toggle refs with the @notify argument.
*
* Removes a reference added with g_object_add_toggle_ref(). The
* reference count of the object is decreased by one.
@ -3345,7 +3346,7 @@ g_object_remove_toggle_ref (GObject *object,
for (i = 0; i < tstack->n_toggle_refs; i++)
if (tstack->toggle_refs[i].notify == notify &&
tstack->toggle_refs[i].data == data)
(tstack->toggle_refs[i].data == data || data == NULL))
{
found_one = TRUE;
tstack->n_toggle_refs -= 1;

View File

@ -256,7 +256,8 @@ main (int argc,
g_assert (object_destroyed == FALSE);
clear_flags ();
g_object_remove_toggle_ref (object, toggle_ref2, GUINT_TO_POINTER (24));
/* Check that removing a toggle ref with %NULL data works fine. */
g_object_remove_toggle_ref (object, toggle_ref2, NULL);
g_assert (toggle_ref1_weakened == FALSE);
g_assert (toggle_ref1_strengthened == FALSE);
g_assert (toggle_ref2_weakened == FALSE);