From: Thadeu Lima de Souza Cascardo Date: Sun, 12 Oct 2008 01:48:06 +0000 (-0300) Subject: Fixed memory leak when enumerating entries X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fatompub.git;a=commitdiff_plain;h=d863d003324c6cb504bc6913d3f007e89ae4b50a Fixed memory leak when enumerating entries --- 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; }