[evolution-data-server] [http calendar] Ref backend inside source_changed_cb()



commit 9c51a13fafb05af60caeb6ab19e77ca4c715f72a
Author: Milan Crha <mcrha redhat com>
Date:   Wed Jan 9 15:41:10 2013 +0100

    [http calendar] Ref backend inside source_changed_cb()
    
    In certain situation, the backend can be freed while the callback
    is still in action, then the factory can crash inside
    cal_backend_http_ensure_uri() or such.

 calendar/backends/http/e-cal-backend-http.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)
---
diff --git a/calendar/backends/http/e-cal-backend-http.c b/calendar/backends/http/e-cal-backend-http.c
index 4943810..c2db383 100644
--- a/calendar/backends/http/e-cal-backend-http.c
+++ b/calendar/backends/http/e-cal-backend-http.c
@@ -781,6 +781,8 @@ source_changed_cb (ESource *source,
 {
 	g_return_if_fail (E_IS_CAL_BACKEND_HTTP (cbhttp));
 
+	g_object_ref (cbhttp);
+
 	if (cbhttp->priv->uri != NULL) {
 		gboolean uri_changed;
 		const gchar *new_uri;
@@ -804,6 +806,8 @@ source_changed_cb (ESource *source,
 
 		g_free (old_uri);
 	}
+
+	g_object_unref (cbhttp);
 }
 
 static void



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