[evolution-data-server] Fix few memory leaks
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Fix few memory leaks
- Date: Mon, 18 Apr 2011 17:15:38 +0000 (UTC)
commit e976b9b6735c896679c642f680de45deaf8b83f2
Author: Milan Crha <mcrha redhat com>
Date: Mon Apr 18 19:14:03 2011 +0200
Fix few memory leaks
addressbook/libedata-book/e-data-book.c | 14 ++++++++++++++
calendar/libecal/e-cal-component.c | 4 ++--
calendar/libecal/e-cal-util.c | 5 ++++-
calendar/libedata-cal/e-data-cal-factory.c | 11 +++++++++++
4 files changed, 31 insertions(+), 3 deletions(-)
---
diff --git a/addressbook/libedata-book/e-data-book.c b/addressbook/libedata-book/e-data-book.c
index 5495f1e..ccd109f 100644
--- a/addressbook/libedata-book/e-data-book.c
+++ b/addressbook/libedata-book/e-data-book.c
@@ -893,6 +893,19 @@ e_data_book_dispose (GObject *object)
}
static void
+data_book_finalize (GObject *object)
+{
+ EDataBook *book = E_DATA_BOOK (object);
+
+ if (book->priv->gdbus_object) {
+ g_object_unref (book->priv->gdbus_object);
+ book->priv->gdbus_object = NULL;
+ }
+
+ G_OBJECT_CLASS (e_data_book_parent_class)->finalize (object);
+}
+
+static void
e_data_book_class_init (EDataBookClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
@@ -900,6 +913,7 @@ e_data_book_class_init (EDataBookClass *klass)
g_type_class_add_private (klass, sizeof (EDataBookPrivate));
object_class->dispose = e_data_book_dispose;
+ object_class->finalize = data_book_finalize;
if (!op_pool) {
op_pool = g_thread_pool_new (operation_thread, NULL, 10, FALSE, NULL);
diff --git a/calendar/libecal/e-cal-component.c b/calendar/libecal/e-cal-component.c
index 92f8f35..21f8f6f 100644
--- a/calendar/libecal/e-cal-component.c
+++ b/calendar/libecal/e-cal-component.c
@@ -308,9 +308,9 @@ free_icalcomponent (ECalComponent *comp, gboolean free)
priv->categories = NULL;
priv->classification = NULL;
- priv->comment_list = NULL;
+ priv->comment_list = free_slist (priv->comment_list);
priv->completed = NULL;
- priv->contact_list = NULL;
+ priv->contact_list = free_slist (priv->contact_list);
priv->created = NULL;
priv->description_list = free_slist (priv->description_list);
diff --git a/calendar/libecal/e-cal-util.c b/calendar/libecal/e-cal-util.c
index b9fc1ca..1fb404d 100644
--- a/calendar/libecal/e-cal-util.c
+++ b/calendar/libecal/e-cal-util.c
@@ -1209,7 +1209,6 @@ e_cal_util_get_component_occur_times (ECalComponent *comp,
{
struct icalrecurrencetype ir;
ECalComponentDateTime dt_start, dt_end;
- GSList *rrules = NULL, *exrules = NULL, *elem, *rdates = NULL;
g_return_if_fail (comp != NULL);
g_return_if_fail (start != NULL);
@@ -1258,6 +1257,8 @@ e_cal_util_get_component_occur_times (ECalComponent *comp,
/* ALARMS, EVENTS: DTEND and reccurences */
if (e_cal_component_has_recurrences (comp)) {
+ GSList *rrules = NULL, *exrules = NULL, *elem, *rdates = NULL;
+
/* Do the RRULEs, EXRULEs and RDATEs*/
e_cal_component_get_rrule_property_list (comp, &rrules);
e_cal_component_get_exrule_property_list (comp, &exrules);
@@ -1316,6 +1317,8 @@ e_cal_util_get_component_occur_times (ECalComponent *comp,
else if (rdate_end > *end)
*end = rdate_end;
}
+
+ e_cal_component_free_period_list (rdates);
}
/* Get dtend of the component and convert it to UTC */
diff --git a/calendar/libedata-cal/e-data-cal-factory.c b/calendar/libedata-cal/e-data-cal-factory.c
index f675940..0b02e42 100644
--- a/calendar/libedata-cal/e-data-cal-factory.c
+++ b/calendar/libedata-cal/e-data-cal-factory.c
@@ -578,6 +578,7 @@ static void
e_data_cal_factory_finalize (GObject *object)
{
EDataCalFactory *factory = E_DATA_CAL_FACTORY (object);
+ gint ii;
g_return_if_fail (factory != NULL);
@@ -592,6 +593,16 @@ e_data_cal_factory_finalize (GObject *object)
g_mutex_free (factory->priv->backends_mutex);
+ for (ii = 0; ii < E_CAL_SOURCE_TYPE_LAST; ii++) {
+ if (factory->priv->lists[ii]) {
+ g_object_unref (factory->priv->lists[ii]);
+ factory->priv->lists[ii] = NULL;
+ }
+
+ g_slist_free (factory->priv->backends_by_type[ii]);
+ factory->priv->backends_by_type[ii] = NULL;
+ }
+
/* Chain up to parent's finalize() method. */
G_OBJECT_CLASS (e_data_cal_factory_parent_class)->finalize (object);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]