From d863d003324c6cb504bc6913d3f007e89ae4b50a Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Sat, 11 Oct 2008 22:48:06 -0300 Subject: [PATCH] Fixed memory leak when enumerating entries --- src/backend.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/backend.c b/src/backend.c index 5bcbb42..7fe3beb 100644 --- a/src/backend.c +++ b/src/backend.c @@ -89,15 +89,32 @@ atom_backend_enumerate_entries (AtomCtx *ctx, char *** reqs, char **rreqs = NULL; AtomEntry **rentries = NULL; size_t rlen = 0; + int i; backend = atom_backend (ctx); if (backend && backend->enumerate_entries) { backend->enumerate_entries (ctx, &rreqs, &rentries, &rlen); } if (reqs) - *reqs = rreqs; + { + *reqs = rreqs; + } + else + { + for (i = 0; i < rlen; i++) + g_free (rreqs[i]); + g_free (rreqs); + } if (entries) - *entries = rentries; + { + *entries = rentries; + } + else + { + for (i = 0; i < rlen; i++) + atom_entry_delete (rentries[i]); + g_free (rentries); + } if (len) *len = rlen; } @@ -134,6 +151,7 @@ atom_retrieve_feed (AtomCtx *ctx) return NULL; feed = atom_feed_new (); atom_feed_entry_append_array (feed, entries, len); + g_free (entries); return feed; } -- 2.20.1