X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Flanguage%2Fstats%2Fregression.c;h=cb2c3ff31bd2cd77334f38922c3b3b80ad9314c0;hb=97de936d25fbed47960ac4ebd9a911fdd528f9e4;hp=9e1aba8815e22f173fab6042db2acf5b293e1cef;hpb=4578c8923824a14086313d6946a48cd94551afbe;p=pspp diff --git a/src/language/stats/regression.c b/src/language/stats/regression.c index 9e1aba8815..cb2c3ff31b 100644 --- a/src/language/stats/regression.c +++ b/src/language/stats/regression.c @@ -196,16 +196,15 @@ reg_get_name (const struct dictionary *dict, const char *prefix) static bool regression_trns_free (void *t_) { - bool result = true; struct reg_trns *t = t_; if (t->trns_id == t->n_trns) { - result = linreg_free (t->c); + linreg_unref (t->c); } free (t); - return result; + return true; } static void @@ -249,6 +248,7 @@ subcommand_save (const struct regression *cmd) { if ((*lc)->depvar != NULL) { + (*lc)->refcnt++; if (cmd->resid) { reg_save_var (cmd->ds, "RES", regression_trns_resid_proc, *lc, @@ -401,11 +401,13 @@ cmd_regression (struct lexer *lexer, struct dataset *ds) } if (regression.pred || regression.resid ) - subcommand_save (®ression); + { + subcommand_save (®ression); + } for (k = 0; k < regression.n_dep_vars; k++) - linreg_free (regression.models[k]); + linreg_unref (regression.models[k]); free (regression.models); free (regression.vars); free (regression.dep_vars); @@ -413,7 +415,7 @@ cmd_regression (struct lexer *lexer, struct dataset *ds) error: for (k = 0; k < regression.n_dep_vars; k++) - linreg_free (regression.models[k]); + linreg_unref (regression.models[k]); free (regression.models); free (regression.vars); free (regression.dep_vars); @@ -684,7 +686,7 @@ run_regression (const struct regression *cmd, struct casereader *input) { msg (SE, _("No valid data found. This command was skipped.")); - linreg_free (models[k]); + linreg_unref (models[k]); models[k] = NULL; } gsl_matrix_free (this_cm);