From 146f03d78d2663350f619fd70b7e68c581575765 Mon Sep 17 00:00:00 2001 From: John Darrington Date: Mon, 1 Feb 2016 10:54:39 +0100 Subject: [PATCH] Frequencies: Fix some memory leaks --- src/language/stats/frequencies.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/language/stats/frequencies.c b/src/language/stats/frequencies.c index 8fb96b0d57..7b96f8d53d 100644 --- a/src/language/stats/frequencies.c +++ b/src/language/stats/frequencies.c @@ -580,7 +580,7 @@ cmd_frequencies (struct lexer *lexer, struct dataset *ds) { int i; struct frq_proc frq; - const struct variable **vars; + const struct variable **vars = NULL; bool sbc_barchart = false; bool sbc_piechart = false; @@ -1225,19 +1225,37 @@ cmd_frequencies (struct lexer *lexer, struct dataset *ds) { struct ccase *c; precalc (&frq, group, ds); + for (; (c = casereader_read (group)) != NULL; case_unref (c)) calc (&frq, c, ds); postcalc (&frq, ds); + casereader_destroy (group); } ok = casegrouper_destroy (grouper); ok = proc_commit (ds) && ok; } + free (vars); + free (frq.vars); + free (frq.bar); + free (frq.pie); + free (frq.hist); + free (frq.percentiles); + pool_destroy (frq.pool); + return CMD_SUCCESS; error: + free (vars); + free (frq.vars); + free (frq.bar); + free (frq.pie); + free (frq.hist); + free (frq.percentiles); + pool_destroy (frq.pool); + return CMD_FAILURE; } -- 2.30.2