{
struct ccase *c;
const gsl_matrix *var_matrix, *samples_matrix, *mean_matrix;
- gsl_matrix *cov_matrix;
- gsl_matrix *corr_matrix;
+ gsl_matrix *cov_matrix = NULL;
+ gsl_matrix *corr_matrix = NULL;
struct covariance *cov = covariance_2pass_create (corr->n_vars_total, corr->vars,
NULL,
opts->wv, opts->exclude);
{
covariance_accumulate_pass2 (cov, c);
}
-
- cov_matrix = covariance_calculate (cov);
-
casereader_destroy (rc);
-
+
+ cov_matrix = covariance_calculate (cov);
+ if (! cov_matrix)
+ {
+ msg (SE, _("The data for the chosen variables are all missing or empty."));
+ goto error;
+ }
+
samples_matrix = covariance_moments (cov, MOMENT_NONE);
var_matrix = covariance_moments (cov, MOMENT_VARIANCE);
mean_matrix = covariance_moments (cov, MOMENT_MEAN);
output_correlation (corr, opts, corr_matrix,
samples_matrix, cov_matrix);
+ error:
covariance_destroy (cov);
gsl_matrix_free (corr_matrix);
gsl_matrix_free (cov_matrix);
AT_CHECK([pspp -o pspp.csv correlations.sps], [1], [ignore])
AT_CLEANUP
+
+dnl Another Crash found by zzuf
+AT_SETUP([CORRELATIONS -- empty dataset 2])
+
+AT_DATA([correlations.sps], [dnl
+data list notable list /foo * bar * wiz bang *.
+begin data.
+ 1 00 3 .
+ 3 9 -50 .
+98 78 104 .
+ . 4 4 .
+ 5 3 0 .
+end data.
+
+correlations
+ variables = foo bar wiz bang
+ /missing = listwise
+ .
+])
+
+AT_CHECK([pspp -O format=csv correlations.sps], [1], [dnl
+correlations.sps:13: error: CORRELATIONS: The data for the chosen variables are all missing or empty.
+])
+
+AT_CLEANUP