X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Ffrequencies.c;h=7b96f8d53d9b34b70f5cac2a5a69eceae2074372;hb=146f03d78d2663350f619fd70b7e68c581575765;hp=8fb96b0d57e2316d59ecda71099d317d189e10db;hpb=958e78555714e9f1847513f9cc576fa2cd7a6769;p=pspp 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; }