From c79b359c221a3bb046492c589a8c82af06f09cc0 Mon Sep 17 00:00:00 2001 From: John Darrington Date: Sat, 24 Nov 2012 09:06:54 +0100 Subject: [PATCH] Fixed bug in NPAR BINOMIAL This bug would crash when an incorrect syntax was encountered. --- src/language/stats/npar.c | 3 ++- tests/language/stats/npar.at | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/language/stats/npar.c b/src/language/stats/npar.c index af41b10473..737c94e3d2 100644 --- a/src/language/stats/npar.c +++ b/src/language/stats/npar.c @@ -945,7 +945,8 @@ npar_binomial (struct lexer *lexer, struct dataset *ds, { if (lex_match (lexer, T_LPAREN)) { - lex_force_num (lexer); + if (! lex_force_num (lexer)) + return 2; btp->category1 = lex_number (lexer); lex_get (lexer); if ( lex_match (lexer, T_COMMA)) diff --git a/tests/language/stats/npar.at b/tests/language/stats/npar.at index 38e2e7c4c1..f5eb2a404c 100644 --- a/tests/language/stats/npar.at +++ b/tests/language/stats/npar.at @@ -274,6 +274,28 @@ x,Group1,10.000,10.000,.435,.500,.678 ]) AT_CLEANUP + + +dnl Test for a bug which caused binomial to crash. +AT_SETUP([NPAR TESTS BINOMIAL - crash]) +AT_DATA([nparX.sps], [dnl +data list list /range *. +begin data. +0 +1 +end data. + +* This is invalid syntax +NPAR TEST + /BINOMIAL(0.5) = Range(). + +]) +AT_CHECK([pspp -O format=csv nparX.sps], [1], [ignore]) + +AT_CLEANUP + + + AT_SETUP([NPAR TESTS CHISQUARE]) AT_DATA([npar.sps], [dnl DATA LIST NOTABLE LIST /x * y * w *. -- 2.30.2