mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-05-07 15:38:01 +02:00
dbus/dbus-object-tree.c: Add test case for parent removal fix
This commit is contained in:
parent
a2963d23a6
commit
7480178289
1 changed files with 24 additions and 0 deletions
|
|
@ -2088,6 +2088,30 @@ object_tree_test_iteration (void *data)
|
|||
_dbus_assert (!find_subtree_registered_or_unregistered (tree, path1));
|
||||
_dbus_assert (find_subtree_registered_or_unregistered (tree, path0));
|
||||
|
||||
/* Test that registered parents cannot be freed out from under their
|
||||
children, and that if they are unregistered before their children, they
|
||||
are still freed when their children are unregistered */
|
||||
if (!do_register (tree, path1, TRUE, 1, tree_test_data))
|
||||
goto out;
|
||||
if (!do_register (tree, path2, TRUE, 2, tree_test_data))
|
||||
goto out;
|
||||
|
||||
_dbus_assert (find_subtree (tree, path1, NULL));
|
||||
_dbus_assert (find_subtree (tree, path2, NULL));
|
||||
|
||||
_dbus_object_tree_unregister_and_unlock (tree, path1);
|
||||
_dbus_assert (!find_subtree (tree, path1, NULL));
|
||||
_dbus_assert (find_subtree (tree, path2, NULL));
|
||||
_dbus_assert (find_subtree_registered_or_unregistered (tree, path1));
|
||||
_dbus_assert (find_subtree_registered_or_unregistered (tree, path0));
|
||||
|
||||
_dbus_object_tree_unregister_and_unlock (tree, path2);
|
||||
_dbus_assert (!find_subtree (tree, path1, NULL));
|
||||
_dbus_assert (!find_subtree_registered_or_unregistered (tree, path1));
|
||||
_dbus_assert (!find_subtree (tree, path2, NULL));
|
||||
_dbus_assert (!find_subtree_registered_or_unregistered (tree, path2));
|
||||
_dbus_assert (find_subtree_registered_or_unregistered (tree, path0));
|
||||
|
||||
/* Register it all again, and test dispatch */
|
||||
|
||||
if (!do_register (tree, path0, TRUE, 0, tree_test_data))
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue