summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSjoerd Simons <sjoerd@luon.net>2011-10-16 10:57:29 +0100
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2011-10-18 13:18:09 +0100
commitf07201c314e891354f236d7ec49a11700ce02da0 (patch)
tree88a01e9053ee99c68917b1bef6932111b7dccbdd
parentcf3f1b026b13fe377057f6e1102eefaad1e24c72 (diff)
GDBusConnection: Fix race in /gdbus/connection/life-cycle
GDBusConnection sets the closed flag in the worker thread, then adds an idle callback (which refs the Connection) to signal this in the main thread. The tests session_bus_down doesn't spin the mainloop, so the "closed" signal will always fire if iterating the mainloop later (and drops the ref when doing so). But _is_closed can return TRUE even before signalling this, in which case the "closed" signal isn't fired and the ref isn't dropped, causing the test to fail. Instead simply always wait for the closed signal, which is a good thing to check anyway and ensures the ref is closed. Bug: https://bugzilla.gnome.org/show_bug.cgi?id=661896 Reviewed-by: Matthias Clasen <mclasen@redhat.com>
-rw-r--r--gio/tests/gdbus-connection.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/gio/tests/gdbus-connection.c b/gio/tests/gdbus-connection.c
index a88df900f..073ff9edd 100644
--- a/gio/tests/gdbus-connection.c
+++ b/gio/tests/gdbus-connection.c
@@ -264,8 +264,7 @@ test_connection_life_cycle (void)
g_assert (!g_dbus_connection_is_closed (c));
g_dbus_connection_set_exit_on_close (c, FALSE);
session_bus_down ();
- if (!g_dbus_connection_is_closed (c))
- _g_assert_signal_received (c, "closed");
+ _g_assert_signal_received (c, "closed");
g_assert (g_dbus_connection_is_closed (c));
_g_object_wait_for_single_ref (c);