diff options
author | Suman Manjunath <msuman@src.gnome.org> | 2008-07-13 20:53:53 +0800 |
---|---|---|
committer | Suman Manjunath <msuman@src.gnome.org> | 2008-07-13 20:53:53 +0800 |
commit | dd8e931c582b1deb5d16684696e5590e39ed8832 (patch) | |
tree | e4c9f343e8f829ded85db5c1ea1a4b6110bb4024 | |
parent | 7b7e770d3077b8e85ab2d746fb78284e53fb9ea5 (diff) | |
download | gsoc2013-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/ChangeLog | 10 | ||||
-rw-r--r-- | addressbook/conduit/address-conduit.c | 2 | ||||
-rw-r--r-- | calendar/ChangeLog | 12 | ||||
-rw-r--r-- | calendar/conduits/calendar/calendar-conduit.c | 2 | ||||
-rw-r--r-- | calendar/conduits/memo/memo-conduit.c | 2 | ||||
-rw-r--r-- | calendar/conduits/todo/todo-conduit.c | 2 |
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; |