ONEWAY: fix crash in contrasts when dataset is empty
authorJohn Darrington <john@darrington.wattle.id.au>
Tue, 12 Jan 2016 11:22:37 +0000 (12:22 +0100)
committerJohn Darrington <john@darrington.wattle.id.au>
Tue, 12 Jan 2016 11:22:37 +0000 (12:22 +0100)
src/language/stats/oneway.c
tests/language/stats/oneway.at

index f2214e49e2bd273b2ca1c4fee673f58229071d65..544889dfae4e3580c9ff11f3acb50c8801ea58ae 100644 (file)
@@ -1387,6 +1387,8 @@ show_contrast_tests (const struct oneway_spec *cmd, const struct oneway_workspac
     {
       const struct per_var_ws *pvw = &ws->vws[v];
       const struct categoricals *cats = covariance_get_categoricals (pvw->cov);
+      if (!categoricals_is_complete (cats))
+       continue;
       struct ll *cli;
       int i = 0;
       int lines_per_variable = 2 * n_contrasts;
index c686f27c177ccd8c81a5bc5940bb37377ace9aec..1d6b4c13a09f29522df42cd0b7b39c107693610e 100644 (file)
@@ -974,3 +974,24 @@ ONEWAY
 AT_CHECK([pspp -O format=csv crash3.sps], [0], [ignore])
 
 AT_CLEANUP
+
+
+AT_SETUP([ONEWAY Crash on empty data])
+AT_DATA([crash4.sps],[dnl
+DATA LIST NOTABLE LIST /height * weight * temperature * sex *.
+BEGIN DATA.
+1801     .       .     0
+1606     .       .     1
+END DATA.
+
+ONEWAY /VARIABLES= height weight temperature BY sex
+ /CONTRAST = -1  1
+ /CONTRAST = -3  3
+ /CONTRAST =  2 -2  1
+ /CONTRAST = -9  9
+ .
+])
+
+AT_CHECK([pspp -O format=csv crash4.sps], [0], [ignore])
+
+AT_CLEANUP