aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSuman Manjunath <msuman@src.gnome.org>2008-07-13 20:53:53 +0800
committerSuman Manjunath <msuman@src.gnome.org>2008-07-13 20:53:53 +0800
commitdd8e931c582b1deb5d16684696e5590e39ed8832 (patch)
treee4c9f343e8f829ded85db5c1ea1a4b6110bb4024
parent7b7e770d3077b8e85ab2d746fb78284e53fb9ea5 (diff)
downloadgsoc2013-evolution-dd8e931c582b1deb5d16684696e5590e39ed8832.tar.gz
gsoc2013-evolution-dd8e931c582b1deb5d16684696e5590e39ed8832.tar.zst
gsoc2013-evolution-dd8e931c582b1deb5d16684696e5590e39ed8832.zip
Patch from Keith Packard <keithp@keithp.com>: Fix for bug #541355 (Remove freed objects from the 'locals' list in each conduit which otherwise frees them again when the conduit is closed.)
svn path=/trunk/; revision=35742
-rw-r--r--addressbook/ChangeLog10
-rw-r--r--addressbook/conduit/address-conduit.c2
-rw-r--r--calendar/ChangeLog12
-rw-r--r--calendar/conduits/calendar/calendar-conduit.c2
-rw-r--r--calendar/conduits/memo/memo-conduit.c2
-rw-r--r--calendar/conduits/todo/todo-conduit.c2
6 files changed, 30 insertions, 0 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog
index c3432bf9d5..c62f154be6 100644
--- a/addressbook/ChangeLog
+++ b/addressbook/ChangeLog
@@ -1,3 +1,13 @@
+2008-07-13 Keith Packard <keithp@keithp.com>
+
+ ** Fix for bug #541355
+
+ * conduit/address-conduit.c:
+ The pilot link code does call free_match on data returned from the
+ for_each method, which the evolution conduits aren't prepared to
+ handle. This patch removes any freed objects from the 'locals' list in
+ each conduit which otherwise frees them again when the conduit is closed.
+
2008-07-03 Milan Crha <mcrha@redhat.com>
** Fix for bug #540152
diff --git a/addressbook/conduit/address-conduit.c b/addressbook/conduit/address-conduit.c
index 1e746ffa71..b88a85eb96 100644
--- a/addressbook/conduit/address-conduit.c
+++ b/addressbook/conduit/address-conduit.c
@@ -1774,6 +1774,8 @@ free_match (GnomePilotConduitSyncAbs *conduit,
g_return_val_if_fail (local != NULL, -1);
+ ctxt->locals = g_list_remove (ctxt->locals, local);
+
addrconduit_destroy_record (local);
return 0;
diff --git a/calendar/ChangeLog b/calendar/ChangeLog
index b763d3fb21..2a0d2a8048 100644
--- a/calendar/ChangeLog
+++ b/calendar/ChangeLog
@@ -1,3 +1,15 @@
+2008-07-13 Keith Packard <keithp@keithp.com>
+
+ ** Fix for bug #541355
+
+ * conduits/calendar/calendar-conduit.c:
+ * conduits/memo/memo-conduit.c:
+ * conduits/todo/todo-conduit.c:
+ The pilot link code does call free_match on data returned from the
+ for_each method, which the evolution conduits aren't prepared to
+ handle. This patch removes any freed objects from the 'locals' list in
+ each conduit which otherwise frees them again when the conduit is closed.
+
2008-07-09 Milan Crha <mcrha@redhat.com>
** Fix for bug #524130
diff --git a/calendar/conduits/calendar/calendar-conduit.c b/calendar/conduits/calendar/calendar-conduit.c
index 29cb398cb3..5d610132a3 100644
--- a/calendar/conduits/calendar/calendar-conduit.c
+++ b/calendar/conduits/calendar/calendar-conduit.c
@@ -2016,6 +2016,8 @@ free_match (GnomePilotConduitSyncAbs *conduit,
g_return_val_if_fail (local != NULL, -1);
+ ctxt->locals = g_list_remove (ctxt->locals, local);
+
calconduit_destroy_record (local);
return 0;
diff --git a/calendar/conduits/memo/memo-conduit.c b/calendar/conduits/memo/memo-conduit.c
index f09abc94b3..1a9638b0ce 100644
--- a/calendar/conduits/memo/memo-conduit.c
+++ b/calendar/conduits/memo/memo-conduit.c
@@ -1302,6 +1302,8 @@ free_match (GnomePilotConduitSyncAbs *conduit,
g_return_val_if_fail (local != NULL, -1);
+ ctxt->locals = g_list_remove (ctxt->locals, local);
+
memoconduit_destroy_record (local);
return 0;
diff --git a/calendar/conduits/todo/todo-conduit.c b/calendar/conduits/todo/todo-conduit.c
index feee558e5d..de93956d18 100644
--- a/calendar/conduits/todo/todo-conduit.c
+++ b/calendar/conduits/todo/todo-conduit.c
@@ -1487,6 +1487,8 @@ free_match (GnomePilotConduitSyncAbs *conduit,
g_return_val_if_fail (local != NULL, -1);
+ ctxt->locals = g_list_remove (ctxt->locals, local);
+
todoconduit_destroy_record (local);
return 0;