[evolution-data-server] libebook: Don’t emit a wa rning on a dropped D-Bus connection in dispose
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] libebook: Don’t emit a wa rning on a dropped D-Bus connection in dispose
- Date: Thu, 10 Apr 2014 08:49:19 +0000 (UTC)
commit e31aae9c123da33a5613fa77cba55668e356f9ce
Author: Philip Withnall <philip tecnocode co uk>
Date: Mon Apr 7 22:22:12 2014 +0100
libebook: Don’t emit a warning on a dropped D-Bus connection in dispose
This occasionally and unavoidably happens in the libfolks unit tests,
where libfolks drops its final EBookClientView reference and proceeds to
kill the dbus-daemon. EBookClientView, however, keeps itself alive
internally in order to send a dispose() method call to the address book
server. This method call can return after the server has been killed,
and will return a G_IO_ERROR_CLOSED error in such cases. Ignore them.
https://bugzilla.gnome.org/show_bug.cgi?id=727784
addressbook/libebook/e-book-client-view.c | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/addressbook/libebook/e-book-client-view.c b/addressbook/libebook/e-book-client-view.c
index ed8e67b..6212588 100644
--- a/addressbook/libebook/e-book-client-view.c
+++ b/addressbook/libebook/e-book-client-view.c
@@ -677,11 +677,17 @@ book_client_view_dispose_cb (GObject *source_object,
e_gdbus_book_view_call_dispose_finish (
G_DBUS_PROXY (source_object), result, &local_error);
- if (local_error != NULL) {
+ /* Ignore closed errors, since this callback can be called after the
+ * EBookClientView has been disposed, and hence after the calling code
+ * has dropped its final reference and gone on to clean up other things
+ * (like the dbus-daemon, if it’s a test harness). */
+ if (local_error != NULL &&
+ !g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_CLOSED)) {
g_dbus_error_strip_remote_error (local_error);
g_warning ("%s: %s", G_STRFUNC, local_error->message);
- g_error_free (local_error);
}
+
+ g_clear_error (&local_error);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]