[evolution-data-server] Avoid crash under e_source_set_connection_status()



commit 04deadd27e56077bcfd55950f1349d008776e5f5
Author: Milan Crha <mcrha redhat com>
Date:   Thu Feb 19 13:59:09 2015 +0100

    Avoid crash under e_source_set_connection_status()
    
    It didn't check whether the ESource's corresponding GDBus object
    is valid, thus it crashed when the source was removed meanwhile.

 libedataserver/e-source.c |   13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)
---
diff --git a/libedataserver/e-source.c b/libedataserver/e-source.c
index 0160442..822a551 100644
--- a/libedataserver/e-source.c
+++ b/libedataserver/e-source.c
@@ -3612,10 +3612,15 @@ e_source_set_connection_status (ESource *source,
                EDBusSource *dbus_source;
 
                dbus_object = e_source_ref_dbus_object (E_SOURCE (source));
-               dbus_source = e_dbus_object_get_source (E_DBUS_OBJECT (dbus_object));
-               e_dbus_source_set_connection_status (dbus_source, enum_value->value_nick);
-               g_object_unref (dbus_source);
-               g_object_unref (dbus_object);
+               if (dbus_object) {
+                       dbus_source = e_dbus_object_get_source (E_DBUS_OBJECT (dbus_object));
+                       if (dbus_source) {
+                               e_dbus_source_set_connection_status (dbus_source, enum_value->value_nick);
+                               g_object_unref (dbus_source);
+                       }
+
+                       g_object_unref (dbus_object);
+               }
        } else {
                g_warning ("%s: Unknown connection status: %x", G_STRFUNC, connection_status);
        }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]