[evolution-data-server/gnome-3-6] source_write_sync: Fail gracefully when given a scratch source.
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server/gnome-3-6] source_write_sync: Fail gracefully when given a scratch source.
- Date: Tue, 19 Feb 2013 14:29:43 +0000 (UTC)
commit fc24a7a7876de42b01ec49a3d9d8e48abcf426be
Author: Matthew Barnes <mbarnes redhat com>
Date: Tue Feb 19 09:18:47 2013 -0500
source_write_sync: Fail gracefully when given a scratch source.
Apparently e_dbus_object_get_source_writable() does not check its
argument for NULL, and scratch sources have no internal EDBusObject.
(cherry picked from commit 8797493a7d211ec960e03cb8fcd9653220b6fa43)
libedataserver/e-source.c | 20 ++++++++++++--------
1 files changed, 12 insertions(+), 8 deletions(-)
---
diff --git a/libedataserver/e-source.c b/libedataserver/e-source.c
index 29318cd..c8f1164 100644
--- a/libedataserver/e-source.c
+++ b/libedataserver/e-source.c
@@ -1004,16 +1004,20 @@ source_write_sync (ESource *source,
GCancellable *cancellable,
GError **error)
{
- EDBusObject *dbus_object;
- EDBusSourceWritable *dbus_source;
+ EDBusSourceWritable *dbus_interface = NULL;
+ GDBusObject *dbus_object;
gboolean success;
gchar *data;
- dbus_object = E_DBUS_OBJECT (source->priv->dbus_object);
-
- dbus_source = e_dbus_object_get_source_writable (dbus_object);
+ dbus_object = e_source_ref_dbus_object (source);
+ if (dbus_object != NULL) {
+ dbus_interface =
+ e_dbus_object_get_source_writable (
+ E_DBUS_OBJECT (dbus_object));
+ g_object_unref (dbus_object);
+ }
- if (dbus_source == NULL) {
+ if (dbus_interface == NULL) {
g_set_error (
error, G_IO_ERROR,
G_IO_ERROR_PERMISSION_DENIED,
@@ -1025,11 +1029,11 @@ source_write_sync (ESource *source,
data = e_source_to_string (source, NULL);
success = e_dbus_source_writable_call_write_sync (
- dbus_source, data, cancellable, error);
+ dbus_interface, data, cancellable, error);
g_free (data);
- g_object_unref (dbus_source);
+ g_object_unref (dbus_interface);
return success;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]