projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix memory leaks in FACTOR/MATRIX
[pspp]
/
src
/
language
/
stats
/
factor.c
diff --git
a/src/language/stats/factor.c
b/src/language/stats/factor.c
index 9480b3a17a8ccc9947891e24a521c64d0e31c2d3..ae42d406a6d9b17cead82e7cb2276e978c3ffda3 100644
(file)
--- a/
src/language/stats/factor.c
+++ b/
src/language/stats/factor.c
@@
-266,10
+266,6
@@
idata_free (struct idata *id)
gsl_vector_free (id->msr);
gsl_vector_free (id->eval);
gsl_matrix_free (id->evec);
gsl_vector_free (id->msr);
gsl_vector_free (id->eval);
gsl_matrix_free (id->evec);
- if (id->mm.cov != NULL)
- gsl_matrix_free (id->mm.cov);
- if (id->mm.corr != NULL)
- gsl_matrix_free (CONST_CAST (gsl_matrix *, id->mm.corr));
free (id);
}
free (id);
}
@@
-1480,7
+1476,9
@@
cmd_factor (struct lexer *lexer, struct dataset *ds)
{
do_factor_by_matrix (&factor, id);
{
do_factor_by_matrix (&factor, id);
+ gsl_matrix_free (id->mm.corr);
id->mm.corr = NULL;
id->mm.corr = NULL;
+ gsl_matrix_free (id->mm.cov);
id->mm.cov = NULL;
}
id->mm.cov = NULL;
}
@@
-2215,6
+2213,9
@@
do_factor (const struct cmd_factor *factor, struct casereader *r)
do_factor_by_matrix (factor, idata);
finish:
do_factor_by_matrix (factor, idata);
finish:
+ gsl_matrix_free (idata->mm.corr);
+ gsl_matrix_free (idata->mm.cov);
+
idata_free (idata);
casereader_destroy (r);
}
idata_free (idata);
casereader_destroy (r);
}