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
{
if ((*lc)->depvar != NULL)
{
+ (*lc)->refcnt++;
if (cmd->resid)
{
reg_save_var (cmd->ds, "RES", regression_trns_resid_proc, *lc,
int
cmd_regression (struct lexer *lexer, struct dataset *ds)
{
+ int k;
struct regression regression;
const struct dictionary *dict = dataset_dict (ds);
}
if (regression.pred || regression.resid )
- subcommand_save (®ression);
+ {
+ subcommand_save (®ression);
+ }
+ for (k = 0; k < regression.n_dep_vars; k++)
+ linreg_unref (regression.models[k]);
+ free (regression.models);
+ free (regression.vars);
+ free (regression.dep_vars);
return CMD_SUCCESS;
error:
+ for (k = 0; k < regression.n_dep_vars; k++)
+ linreg_unref (regression.models[k]);
+ free (regression.models);
+ free (regression.vars);
+ free (regression.dep_vars);
return CMD_FAILURE;
}
}
else
{
- msg (SE,
+ msg (SE,
_("No valid data found. This command was skipped."));
- linreg_free (models[k]);
- models[k] = NULL;
+ linreg_unref (models[k]);
+ models[k] = NULL;
}
gsl_matrix_free (this_cm);
}