From: Thomas Fitzsimmons Date: Wed, 27 Mar 2013 20:16:24 +0000 (-0400) Subject: dbus/dbus-object-tree.c: Add test case for parent removal fix X-Git-Tag: dbus-1.7.6~43^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6d482371afd95bc09ef7697b1d924775138e1263;p=thirdparty%2Fdbus.git dbus/dbus-object-tree.c: Add test case for parent removal fix --- diff --git a/dbus/dbus-object-tree.c b/dbus/dbus-object-tree.c index 8ae0f2398..325bc89a1 100644 --- a/dbus/dbus-object-tree.c +++ b/dbus/dbus-object-tree.c @@ -2138,6 +2138,31 @@ 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 freeing multiple children from the same path */ + if (!do_register (tree, path3, TRUE, 3, tree_test_data)) + goto out; + if (!do_register (tree, path4, TRUE, 4, tree_test_data)) + goto out; + + _dbus_assert (find_subtree (tree, path3, NULL)); + _dbus_assert (find_subtree (tree, path4, NULL)); + + _dbus_object_tree_unregister_and_unlock (tree, path3); + _dbus_assert (!find_subtree (tree, path3, NULL)); + _dbus_assert (!find_subtree_registered_or_unregistered (tree, path3)); + _dbus_assert (find_subtree (tree, path4, NULL)); + _dbus_assert (find_subtree_registered_or_unregistered (tree, path4)); + _dbus_assert (find_subtree_registered_or_unregistered (tree, path2)); + _dbus_assert (find_subtree_registered_or_unregistered (tree, path1)); + + _dbus_object_tree_unregister_and_unlock (tree, path4); + _dbus_assert (!find_subtree (tree, path4, NULL)); + _dbus_assert (!find_subtree_registered_or_unregistered (tree, path4)); + _dbus_assert (!find_subtree (tree, path3, NULL)); + _dbus_assert (!find_subtree_registered_or_unregistered (tree, path3)); + _dbus_assert (!find_subtree_registered_or_unregistered (tree, path2)); + _dbus_assert (!find_subtree_registered_or_unregistered (tree, path1)); + /* Register it all again, and test dispatch */ if (!do_register (tree, path0, TRUE, 0, tree_test_data))