* [Patch 2/2] tabled: fix up the leak in cld_begin
@ 2009-08-05 7:32 Pete Zaitcev
0 siblings, 0 replies; only message in thread
From: Pete Zaitcev @ 2009-08-05 7:32 UTC (permalink / raw)
To: Jeff Garzik; +Cc: Project Hail List
Signed-off-by: Pete Zaitcev <zaitcev@redhat.com>
diff --git a/server/cldu.c b/server/cldu.c
index 2fc6c38..c9e5b98 100644
--- a/server/cldu.c
+++ b/server/cldu.c
@@ -598,8 +598,8 @@ int cld_begin(const char *thishost, const char *thiscell,
}
if (!ses.forced_hosts) {
- GList *tmp, *host_list = NULL;
- int i = 0;
+ GList *tmp, *host_list;
+ int i;
if (cldc_getaddr(&host_list, thishost, debugging, cldu_p_log)) {
/* Already logged error */
@@ -609,16 +609,20 @@ int cld_begin(const char *thishost, const char *thiscell,
/* copy host_list into cld_session host array,
* taking ownership of alloc'd strings along the way
*/
- tmp = host_list;
- while (i < N_CLD && tmp) {
- memcpy(&ses.cldv[i].h, tmp->data,
- sizeof(struct cldc_host));
- ses.cldv[i].known = 1;
- i++;
- tmp = tmp->next;
+ i = 0;
+ for (tmp = host_list; tmp; tmp = tmp->next) {
+ struct cldc_host *hp = tmp->data;
+ if (i < N_CLD) {
+ memcpy(&ses.cldv[i].h, hp,
+ sizeof(struct cldc_host));
+ ses.cldv[i].known = 1;
+ i++;
+ } else {
+ free(hp->host);
+ }
+ free(hp);
}
- /* FIXME: memleak, if list longer than N_CLD */
g_list_free(host_list);
}
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2009-08-05 7:32 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-05 7:32 [Patch 2/2] tabled: fix up the leak in cld_begin Pete Zaitcev
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.