From cc3b87c04492051146c01e4339f09065ef754db2 Mon Sep 17 00:00:00 2001 From: "Lubomir I. Ivanov" Date: Mon, 24 Dec 2012 03:51:39 +0200 Subject: [PATCH] Clear memory allocated for event names parse-xml.c: When parsing events, we allocate memory for the event 'name' attribute, but also have to free this memory eventually. Let's do that in event_end() right after add_event() is called. Fixes a long-running memory leak in the parser. Signed-off-by: Lubomir I. Ivanov Signed-off-by: Dirk Hohndel --- parse-xml.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/parse-xml.c b/parse-xml.c index f82338b8a..2e4dbc560 100644 --- a/parse-xml.c +++ b/parse-xml.c @@ -1096,10 +1096,13 @@ static struct divecomputer *get_dc(void) static void event_end(void) { struct divecomputer *dc = get_dc(); - if (cur_event.name && strcmp(cur_event.name, "surface") != 0) - add_event(dc, cur_event.time.seconds, - cur_event.type, cur_event.flags, - cur_event.value, cur_event.name); + if (cur_event.name) { + if (strcmp(cur_event.name, "surface") != 0) + add_event(dc, cur_event.time.seconds, + cur_event.type, cur_event.flags, + cur_event.value, cur_event.name); + free((void *)cur_event.name); + } cur_event.active = 0; }