Fixed crash when processing regression with bad syntax
authorJohn Darrington <john@darrington.wattle.id.au>
Sun, 7 Apr 2013 17:56:44 +0000 (19:56 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Sun, 7 Apr 2013 17:56:44 +0000 (19:56 +0200)
src/language/stats/regression.c
tests/language/stats/regression.at

index 4795ee844cbce2550d14f2056164992a52248575..282a252fdd248c646dab458019ab4112880020ea 100644 (file)
@@ -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;
index c153e1ed8d35a0b2c69069be38064e556d9b48cf..e7d89041226ca04452fe47330bb5a61abeed277b 100644 (file)
@@ -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