X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=inline;f=src%2Flanguage%2Fstats%2Foneway.c;h=735c6d441cc8eda8c956b70ba4d487c5a6d1e754;hb=3cd65292e3cc6bd6532214dcc8c8ddc65bdc2972;hp=2a412a3d7e7cc14e133bbdea4970666062943e44;hpb=ab057ea64a9d4f712a537d183bbdc04d2bb24fbe;p=pspp diff --git a/src/language/stats/oneway.c b/src/language/stats/oneway.c index 2a412a3d7e..735c6d441c 100644 --- a/src/language/stats/oneway.c +++ b/src/language/stats/oneway.c @@ -384,6 +384,22 @@ static void show_homogeneity (const struct oneway_spec *, const struct oneway_wo static void output_oneway (const struct oneway_spec *, struct oneway_workspace *ws); static void run_oneway (const struct oneway_spec *cmd, struct casereader *input, const struct dataset *ds); + +static void +destroy_coeff_list (struct contrasts_node *coeff_list) +{ + struct coeff_node *cn = NULL; + struct coeff_node *cnx = NULL; + struct ll_list *cl = &coeff_list->coefficient_list; + + ll_for_each_safe (cn, cnx, struct coeff_node, ll, cl) + { + free (cn); + } + + free (coeff_list); +} + static void oneway_cleanup (struct oneway_spec *cmd) { @@ -391,16 +407,7 @@ oneway_cleanup (struct oneway_spec *cmd) struct contrasts_node *coeff_next = NULL; ll_for_each_safe (coeff_list, coeff_next, struct contrasts_node, ll, &cmd->contrast_list) { - struct coeff_node *cn = NULL; - struct coeff_node *cnx = NULL; - struct ll_list *cl = &coeff_list->coefficient_list; - - ll_for_each_safe (cn, cnx, struct coeff_node, ll, cl) - { - free (cn); - } - - free (coeff_list); + destroy_coeff_list (coeff_list); } free (cmd->posthoc); @@ -529,6 +536,7 @@ cmd_oneway (struct lexer *lexer, struct dataset *ds) } else { + destroy_coeff_list (cl); lex_error (lexer, NULL); goto error; } @@ -629,7 +637,7 @@ makeit (const void *aux1, void *aux2 UNUSED) } static void -killit (const void *aux1 UNUSED, void *user_data) +killit (const void *aux1 UNUSED, void *aux2 UNUSED, void *user_data) { struct descriptive_data *dd = user_data; @@ -897,6 +905,7 @@ output_oneway (const struct oneway_spec *cmd, struct oneway_workspace *ws) i, ll_count (cl), ws->actual_number_of_groups); ll_remove (&coeff_list->ll); + destroy_coeff_list (coeff_list); continue; }