[evolution-data-server] e_cal_backend_remove_view(): Check for match before unreffing view.



commit ceb20c2f1d7c5fcafe31de87f30306aa34419a11
Author: Matthew Barnes <mbarnes redhat com>
Date:   Mon Mar 25 11:26:38 2013 -0400

    e_cal_backend_remove_view(): Check for match before unreffing view.

 calendar/libedata-cal/e-cal-backend.c |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)
---
diff --git a/calendar/libedata-cal/e-cal-backend.c b/calendar/libedata-cal/e-cal-backend.c
index 99d9eb4..6f6ee5c 100644
--- a/calendar/libedata-cal/e-cal-backend.c
+++ b/calendar/libedata-cal/e-cal-backend.c
@@ -1012,12 +1012,22 @@ void
 e_cal_backend_remove_view (ECalBackend *backend,
                            EDataCalView *view)
 {
+       GList *list, *link;
+
        g_return_if_fail (backend != NULL);
        g_return_if_fail (E_IS_CAL_BACKEND (backend));
 
        g_mutex_lock (&backend->priv->views_mutex);
 
-       backend->priv->views = g_list_remove (backend->priv->views, view);
+       list = backend->priv->views;
+
+       link = g_list_find (list, view);
+       if (link != NULL) {
+               g_object_unref (view);
+               list = g_list_delete_link (list, link);
+       }
+
+       backend->priv->views = list;
 
        g_mutex_unlock (&backend->priv->views_mutex);
 }


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