From 9cbe8f135bb944db20c630e991d995af0027d058 Mon Sep 17 00:00:00 2001 From: John Darrington Date: Sun, 7 Apr 2013 19:56:44 +0200 Subject: [PATCH] Fixed crash when processing regression with bad syntax --- src/language/stats/regression.c | 3 +++ tests/language/stats/regression.at | 17 +++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/language/stats/regression.c b/src/language/stats/regression.c index 4795ee844c..282a252fdd 100644 --- a/src/language/stats/regression.c +++ b/src/language/stats/regression.c @@ -414,9 +414,12 @@ cmd_regression (struct lexer *lexer, struct dataset *ds) return CMD_SUCCESS; error: + if (regression.models) + { 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; diff --git a/tests/language/stats/regression.at b/tests/language/stats/regression.at index c153e1ed8d..e7d8904122 100644 --- a/tests/language/stats/regression.at +++ b/tests/language/stats/regression.at @@ -1673,4 +1673,21 @@ AT_CHECK([pspp -o pspp.csv reg-mdv.sps]) AT_CHECK([diff pspp.csv pspp-ref.csv]) +AT_CLEANUP + +AT_SETUP([REGRESSION with invalid syntax (and empty dataset)]) + +AT_DATA([ss.sps], [dnl +data list notable list / v0 to v2. +begin data +end data. + +regression /variables=v0 v1 + /statistics r coeff anova + /dependent=v2 + /method=enter v2. +]) + +AT_CHECK([pspp ss.sps], [1], [ignore]) + AT_CLEANUP -- 2.30.2