From dd8e931c582b1deb5d16684696e5590e39ed8832 Mon Sep 17 00:00:00 2001 From: Suman Manjunath Date: Sun, 13 Jul 2008 12:53:53 +0000 Subject: Patch from Keith Packard : 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 --- addressbook/ChangeLog | 10 ++++++++++ addressbook/conduit/address-conduit.c | 2 ++ calendar/ChangeLog | 12 ++++++++++++ calendar/conduits/calendar/calendar-conduit.c | 2 ++ calendar/conduits/memo/memo-conduit.c | 2 ++ calendar/conduits/todo/todo-conduit.c | 2 ++ 6 files changed, 30 insertions(+) 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 + + ** 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 ** 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 + + ** 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 ** 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; -- cgit v1.2.3