Added custom assert(); Fixed bugs in T-TEST and VALUE LABELS
authorJohn Darrington <john@darrington.wattle.id.au>
Sun, 21 Mar 2004 08:41:19 +0000 (08:41 +0000)
committerJohn Darrington <john@darrington.wattle.id.au>
Sun, 21 Mar 2004 08:41:19 +0000 (08:41 +0000)
81 files changed:
po/en_GB.po
po/pspp.pot
src/ChangeLog
src/aggregate.c
src/algorithm.c
src/alloc.c
src/ascii.c
src/autorecode.c
src/cmdline.c
src/command.c
src/compute.c
src/count.c
src/crosstabs.q
src/data-in.c
src/data-list.c
src/data-out.c
src/descript.q
src/devind.c
src/dfm.c
src/dictionary.c
src/do-if.c
src/error.c
src/error.h
src/expr-evl.c
src/expr-opt.c
src/expr-prs.c
src/file-handle.q
src/file-type.c
src/filename.c
src/flip.c
src/format.c
src/frequencies.q
src/get.c
src/getline.c
src/glob.c
src/groff-font.c
src/hash.c
src/html.c
src/inpt-pgm.c
src/levene.c
src/lexer.c
src/list.q
src/loop.c
src/main.c
src/matrix-data.c
src/matrix.c
src/means.q
src/mis-val.c
src/modify-vars.c
src/numeric.c
src/output.c
src/pfm-read.c
src/pfm-write.c
src/pool.c
src/postscript.c
src/print.c
src/q2c.c
src/random.c
src/recode.c
src/rename-vars.c
src/repeat.c
src/set.q
src/sfm-read.c
src/sfm-write.c
src/som.c
src/sort.c
src/str.c
src/sysfile-info.c
src/t-test.q
src/tab.c
src/temporary.c
src/val-labs.c
src/value-labels.c
src/vars-atr.c
src/vars-prs.c
src/vector.c
src/vfm.c
src/weight.c
tests/Makefile.am
tests/bugs/t-test.sh [new file with mode: 0755]
tests/bugs/val-labs.sh [new file with mode: 0755]

index 80e9967b053ad6303d42c66f1747fbcda1aa27c7..fb025f4e780b6c57d82a14a3fb0665ec726a9a03 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PSPP 0.3.1\n"
 "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2004-03-20 00:30+0800\n"
+"POT-Creation-Date: 2004-03-21 10:15+0800\n"
 "PO-Revision-Date: 2004-01-23 13:04+0800\n"
 "Last-Translator: John Darrington <john@darrington.wattle.id.au>\n"
 "Language-Team: John Darrington <john@darrington.wattle.id.au>\n"
@@ -2105,11 +2105,11 @@ msgstr ""
 msgid "expecting %s"
 msgstr ""
 
-#: src/lexer.c:524 src/val-labs.c:148
+#: src/lexer.c:524 src/val-labs.c:155
 msgid "expecting string"
 msgstr ""
 
-#: src/lexer.c:538 src/val-labs.c:157
+#: src/lexer.c:538 src/val-labs.c:164
 msgid "expecting integer"
 msgstr ""
 
@@ -2193,6 +2193,32 @@ msgstr ""
 msgid "%s without %s."
 msgstr ""
 
+#: src/main.c:71
+msgid "Error initializing output drivers."
+msgstr ""
+
+#: src/main.c:132
+msgid "This command not executed."
+msgstr ""
+
+#: src/main.c:136
+msgid ""
+"Skipping the rest of this command.  Part of this command may have been "
+"executed."
+msgstr ""
+
+#: src/main.c:141
+msgid ""
+"Skipping the rest of this command.  This command was fully executed up to "
+"this point."
+msgstr ""
+
+#: src/main.c:146
+msgid ""
+"Trailing garbage was encountered following this command.  The command was "
+"fully executed to this point."
+msgstr ""
+
 #: src/matrix-data.c:191
 msgid "VARIABLES subcommand multiply specified."
 msgstr ""
@@ -3929,19 +3955,19 @@ msgstr ""
 msgid "Document entered %s %02d:%02d:%02d by %s (%s):"
 msgstr ""
 
-#: src/val-labs.c:112
+#: src/val-labs.c:119
 #, c-format
 msgid ""
 "It is not possible to assign value labels to long string variables such as %"
 "s."
 msgstr ""
 
-#: src/val-labs.c:161
+#: src/val-labs.c:168
 #, c-format
 msgid "Value label `%g' is not integer."
 msgstr ""
 
-#: src/val-labs.c:171
+#: src/val-labs.c:178
 msgid "Truncating value label to 60 characters."
 msgstr ""
 
index 90b5cffc5d6e2602f43a47797b9ecee04cef74b3..07102dc2f06e152394ba512a47b7e5e3b1d7f6cb 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2004-03-20 00:30+0800\n"
+"POT-Creation-Date: 2004-03-21 10:15+0800\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -2106,11 +2106,11 @@ msgstr ""
 msgid "expecting %s"
 msgstr ""
 
-#: src/lexer.c:524 src/val-labs.c:148
+#: src/lexer.c:524 src/val-labs.c:155
 msgid "expecting string"
 msgstr ""
 
-#: src/lexer.c:538 src/val-labs.c:157
+#: src/lexer.c:538 src/val-labs.c:164
 msgid "expecting integer"
 msgstr ""
 
@@ -2194,6 +2194,32 @@ msgstr ""
 msgid "%s without %s."
 msgstr ""
 
+#: src/main.c:71
+msgid "Error initializing output drivers."
+msgstr ""
+
+#: src/main.c:132
+msgid "This command not executed."
+msgstr ""
+
+#: src/main.c:136
+msgid ""
+"Skipping the rest of this command.  Part of this command may have been "
+"executed."
+msgstr ""
+
+#: src/main.c:141
+msgid ""
+"Skipping the rest of this command.  This command was fully executed up to "
+"this point."
+msgstr ""
+
+#: src/main.c:146
+msgid ""
+"Trailing garbage was encountered following this command.  The command was "
+"fully executed to this point."
+msgstr ""
+
 #: src/matrix-data.c:191
 msgid "VARIABLES subcommand multiply specified."
 msgstr ""
@@ -3930,19 +3956,19 @@ msgstr ""
 msgid "Document entered %s %02d:%02d:%02d by %s (%s):"
 msgstr ""
 
-#: src/val-labs.c:112
+#: src/val-labs.c:119
 #, c-format
 msgid ""
 "It is not possible to assign value labels to long string variables such as %"
 "s."
 msgstr ""
 
-#: src/val-labs.c:161
+#: src/val-labs.c:168
 #, c-format
 msgid "Value label `%g' is not integer."
 msgstr ""
 
-#: src/val-labs.c:171
+#: src/val-labs.c:178
 msgid "Truncating value label to 60 characters."
 msgstr ""
 
index 14de86216b6982d1c070c29bab6c64fdd258f28b..edc5c34daa3fbb374083f7c5e6479d4dcd323160 100644 (file)
@@ -1,3 +1,14 @@
+Sun Mar 21 10:11:14 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+        * val-labs.c: Fixed a bug where PSPP would crash, if VALUE LABELS was
+       used with incorrect syntax.
+
+       * error.c, error.h et al:  Overridden definition of assert for a
+       custom one.
+
+       * test-q.c: Fixed a buglet where it would crash if no /VARIABLES
+       subcommand was given when it ought to have been.
+
 Sat Mar 20 22:19:08 2004  Ben Pfaff  <blp@gnu.org>
 
        * tab.c: (tab_vline) Fix assertions to respect row_ofs and
index 193125087cce21539a372becbd14fd6580b3bf05..3821de78b822f9043676c6ec1c4b8cc87dbf03af 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <stdlib.h>
 #include "alloc.h"
 #include "command.h"
index aaa2b8469d77ec8b8e3495b17ec0e917107f1f7b..f294887b2ddf706f22aa786892c2ad81ac9d1709 100644 (file)
 #if __OPTIMIZE__
 #define NDEBUG
 #endif
-#include <assert.h>
+#include "error.h"
 \f
 /* Finds an element in ARRAY, which contains COUNT elements of
    SIZE bytes each, using COMPARE for comparisons.  Returns the
index 267bf2baec09c652807d24cae3a879f128c393c3..0da8f74490fc6082b6e38755e97c30f4bd4bb128 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include "alloc.h"
-#include <assert.h>
+#include "error.h"
 #include <stdio.h>
 #include <stdlib.h>
 #include "str.h"
index d1818aadf7cdf92ee17edbc32ffcc7d82bb01471..72e536b16b0dbe53af90c9c151e2e258df774340 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <ctype.h>
 #include <errno.h>
 #include <limits.h>
index 52104e7acaaaaf51455a619bc997ef989117bb38..9a9b3a0728f0ecc19bbce3b9b16bfc460831cc43 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <stdlib.h>
 #include "alloc.h"
 #include "command.h"
index fd4e6c450dc7ab82410b57a0897238f683e5a32f..b72f545ba211107888c953ac05e3e92b64c97616 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include "cmdline.h"
-#include <assert.h>
+#include "error.h"
 #include <ctype.h>
 #include <stdio.h>
 #include <errno.h>
index b6a0babeb5968a398dd50eea37e82920b3b4ee13..37608055890abbc3533e30babcfa47615831b2dd 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include "command.h"
 #include <stdio.h>
 #include <stdlib.h>
index b08e76feddd9a62f2eb296312b147ab3961a06a9..7ef93858c2118bd2db8175ad9a7fc0fb7ce0b904 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <stdlib.h>
 #include "alloc.h"
 #include "command.h"
index 0fc7370bb8d44c5f660e42c9c3593e769ab649ab..058d60d539d81f71c7880b703fc9f1a1c62e06ad 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <stdlib.h>
 #include "alloc.h"
 #include "command.h"
index b16cb02c75cb4038d0683556b1b1afc3d02a7764..09a7f761635aeb70a4975996c016288a4ddfa27c 100644 (file)
@@ -30,7 +30,7 @@
 */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <ctype.h>
 #include <stdlib.h>
 #include <stdio.h>
index 0c477fa2a162edbccdb21040f4230cf62994b030..3931067daabe0f002dc9365c8873af2a72c13b89 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include "data-in.h"
-#include <assert.h>
+#include "error.h"
 #include <math.h>
 #include <ctype.h>
 #include <stdarg.h>
index da75d5d3185b13723b762d5b943e9a24b48fe2b3..044754d211cba49d90019ef039ed633d65d358e1 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include "data-list.h"
-#include <assert.h>
+#include "error.h"
 #include <ctype.h>
 #include <float.h>
 #include <stdio.h>
index 1206dd9951d14addec9590ec1f5d7fdb77daf114..de9bfad31a42afb2cd96294ee2edbdcce65848e8 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <ctype.h>
 #include <math.h>
 #include <float.h>
index 9ac10325fffe72c656be79ff3e28f1609a0644f5..9ba2b569c79dbf69e80e90e493c71579d30ff0de 100644 (file)
@@ -20,7 +20,7 @@
 /* FIXME: Many possible optimizations. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <limits.h>
 #include <math.h>
 #include <stdlib.h>
index 4a8da54aab812c219adec2486b7db862de41646f..834e96e03be7c1edbd8efcaac88f5ea060193294 100644 (file)
@@ -88,7 +88,7 @@
 
 #include <config.h>
 #include "devind.h"
-#include <assert.h>
+#include "error.h"
 #include <errno.h>
 #include <stdlib.h>
 #include <ctype.h>
index f9aa574111d38a127bcf436a77404368ba2e663b..dd9755ed83376868a22861b2c1129f2dd07ec4b2 100644 (file)
--- a/src/dfm.c
+++ b/src/dfm.c
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include "dfm.h"
 #include <ctype.h>
 #include <errno.h>
index 953b5646657ea4fa61e48a9ece84841435d10f97..6db18670f5ed3c352f182f901261a40355195cf9 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <stdlib.h>
 #include "algorithm.h"
 #include "alloc.h"
index 0dd6466a52895ea9c2fe475c4ad2dcab20d34a78..5dfc0626dfc92932bd9ec24a27216eaa1a8fbab2 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include "do-ifP.h"
-#include <assert.h>
+#include "error.h"
 #include <stdlib.h>
 #include "alloc.h"
 #include "command.h"
index 65a7b0f10a2bf3c035068387c4138c153e936c77..1065fbd7ed93e7f20aa4216bf1fa16d5cea75809 100644 (file)
@@ -18,7 +18,6 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
 #include "error.h"
 #include <ctype.h>
 #include <stdarg.h>
@@ -32,6 +31,7 @@
 #include "settings.h"
 #include "str.h"
 #include "var.h"
+#include "version.h"
 
 int err_error_count;
 int err_warning_count;
@@ -512,3 +512,54 @@ dump_message (char *msg, unsigned indent, void (*func) (const char *),
 
   local_free (buf);
 }
+
+
+void 
+request_bug_report_and_abort(const char *msg )
+{
+  fprintf(stderr,
+         "******************************************************************\n"
+         "You have discovered a bug in PSPP.\n\n"
+         "  Please report this, by sending "
+         "an email to " PACKAGE_BUGREPORT ",\n"
+         "explaining what you were doing when this happened, and including\n"
+         "a sample of your input file which caused it.\n");
+
+  fprintf(stderr,
+         "Also, please copy the following lines into your bug report:\n\n"
+         "bare_version:        %s\n" 
+         "version:             %s\n"
+         "stat_version:        %s\n"
+         "host_system:         %s\n"
+         "build_system:        %s\n"
+         "default_config_path: %s\n"
+         "include_path:        %s\n"
+         "groff_font_path:     %s\n"
+         "locale_dir:          %s\n",
+
+         bare_version,         
+         version,
+         stat_version,
+         host_system,        
+         build_system,
+         default_config_path,
+         include_path, 
+         groff_font_path,
+         locale_dir);     
+
+  if ( msg )
+    fprintf(stderr,"Diagnosis: %s\n",msg);
+
+  fprintf(stderr,
+    "******************************************************************\n");
+
+  abort();
+}
+
+void 
+err_assert_fail(const char *expr, const char *file, int line)
+{
+  const char msg[256];
+  snprintf(msg,256,"Assertion failed: %s:%d; (%s)",file,line,expr);
+  request_bug_report_and_abort( msg );
+}
index 60bcbe85df5cef10bbda9f2c3f4fd615d4a0a85c..095f7af841680562048e325335c3711655c469d0 100644 (file)
@@ -87,4 +87,18 @@ void err_check_count (void);
 void err_hcf (int exit_code) NO_RETURN;
 void err_vmsg (const struct error *);
 
+/* Used in panic situations only */
+void request_bug_report_and_abort(const char *msg );
+
+void err_assert_fail(const char *expr, const char *file, int line);
+
+#undef __STRING
+#define __STRING(x) #x
+#undef assert
+
+                              
+#define assert(expr) ( (void) ( expr ? 0 : \
+              err_assert_fail(__STRING(expr), __FILE__, __LINE__)) )
+
+
 #endif /* error.h */
index d031eff6a0e6fbc687c9f6021b5df276a9e6bf53..d18971bd43bf34827c80bea251ebe552b06b5d2e 100644 (file)
@@ -33,7 +33,7 @@
 #include <ctype.h>
 #include "expr.h"
 #include "exprP.h"
-#include <assert.h>
+#include "error.h"
 #include <math.h>
 #include <errno.h>
 #include <stdio.h>
index 4c8fc7e12c87a44f7c777b5e05eb8dc2149bd1b0..2e65b3e3b92bead21a5d82a4d1b9e1412c1bb8f7 100644 (file)
@@ -20,7 +20,7 @@
 #include <config.h>
 #include "expr.h"
 #include "exprP.h"
-#include <assert.h>
+#include "error.h"
 #include <math.h>
 #include <ctype.h>
 #include <errno.h>
index 701347894d31cb749304f3a271b4204ad29f2c6c..08bf2d4f04bf6fc7610f4c61c85a87ad80141f02 100644 (file)
@@ -20,7 +20,7 @@
 #include <config.h>
 #include "expr.h"
 #include "exprP.h"
-#include <assert.h>
+#include "error.h"
 #include <ctype.h>
 #include <float.h>
 #include <stdlib.h>
index dc1e9383c60abfa16260cae8d38694ef7f5ff908..1133fd31286367695eecf4c815d7eeabf96de2f8 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include "file-handle.h"
-#include <assert.h>
+#include "error.h"
 #include <errno.h>
 #include <stdlib.h>
 #include "alloc.h"
index 89a97938668b283793bd2821b404a4eb0c817106..bc33599da97db2d33a0171c00f438aaba1f57799 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <stdlib.h>
 #include "alloc.h"
 #include "command.h"
index f666674b31886e76c2e3496437146a8686ab4e6e..a52414613b11c7915d7030d6bd103af212b1aeb3 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include "filename.h"
 #include <stdlib.h>
 #include <ctype.h>
index 6bd6a243907f6632712fd64aa48419764a56e67e..1349ef1a014597ba8b6f992657ddc029d6823799 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <ctype.h>
 #include <errno.h>
 #include <float.h>
index 4ff96241ae55815939134f294eb5677721916a30..44fbff4638d2338921a9b6463b273aa32bc8c592 100644 (file)
@@ -20,7 +20,7 @@
 #include <config.h>
 #include "format.h"
 #include <ctype.h>
-#include <assert.h>
+#include "error.h"
 #include <stdlib.h>
 #include "error.h"
 #include "lexer.h"
index 37862b5ac50938445b8ec3003d78c3791cd552a0..e7657b64189b7a254c6d1e9b4e38605ddf61a688 100644 (file)
@@ -24,7 +24,7 @@
 */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <math.h>
 #include <stdlib.h>
 #include "alloc.h"
index 17722ce664b984e51109a6aaa79f36830deca0d0..e2b4977e64c0f25fb6f31ab17a523528d1c46181 100644 (file)
--- a/src/get.c
+++ b/src/get.c
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <stdlib.h>
 #include "alloc.h"
 #include "command.h"
index 2988b0787b45f1747a959b834733057194a76575..b9f0a1d5b4c4b41f51397c95964ef031e284a409 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include "getline.h"
-#include <assert.h>
+#include "error.h"
 #include <stdio.h>
 #include <errno.h>
 #include <stdlib.h>
index 61c70b46c2e5efbc34e7cce5e62b1a2b6472af72..e1d5bba0b303214cac0a2e224c5c505e9b605569 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include "glob.h"
-#include <assert.h>
+#include "error.h"
 #include <stdlib.h>
 #include <stdio.h>
 
index 15135aa1a3bdee060d5a2b73e33aa72a93be408c..331da33d38dbd07ec4239f35e2a07b05cadc066a 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include "font.h"
-#include <assert.h>
+#include "error.h"
 #include <stdio.h>
 #include <errno.h>
 #include <stdlib.h>
index 9961612ccf0ec2f5b24e61c2dd2650e9250cfc16..f42901ea8e5479d42c6f0ee0ad0e3c603badc1a6 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include "hash.h"
-#include <assert.h>
+#include "error.h"
 #include <limits.h>
 #include <stdlib.h>
 #include "algorithm.h"
@@ -479,7 +479,7 @@ hsh_count (struct hsh_table *h)
 
 #if GLOBAL_DEBUGGING
 #undef NDEBUG
-#include <assert.h>
+#include "error.h"
 #include <stdio.h>
 
 /* Displays contents of hash table H on stdout. */
index 6f56b47e9762efd6afbdb6ced40d556bdff609fd..492614731cf6ad199c7d981792237da8e3647e0d 100644 (file)
@@ -22,7 +22,7 @@
 
 #include <config.h>
 #include "htmlP.h"
-#include <assert.h>
+#include "error.h"
 #include <errno.h>
 #include <stdlib.h>
 #include <ctype.h>
index ee2fd7cb1302c0a495a0ef26ed59a00a9e68314f..3ed20e195dc1870f142b3345d99db247253601c7 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <float.h>
 #include <stdlib.h>
 #include "alloc.h"
index 34abe3981e423ae473aae946d7eface3875c5ef6..635c68689e93af7d872b7d184756e8f3122669e2 100644 (file)
@@ -20,7 +20,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include "levene.h"
 #include "hash.h"
 #include "str.h"
index 91712bf2650552f61ababddfde500d89f0cac435..9ad48dfb4b5431a4b41d5bb51efee6754c6e2386 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include "lexer.h"
-#include <assert.h>
+#include "error.h"
 #include <ctype.h>
 #include <errno.h>
 #include <limits.h>
index 10d2baad38df3999a9b458222781eda4dc78604c..56f45342be4005cf1c02d05e83c8fd7a480de558 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <stdio.h>
 #include <stdlib.h>
 #include "alloc.h"
index 7f8aa87559cbfacc32029715426623aa45c988c0..bfb18e6e4bba917409825d4a077b00d44110dd8b 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include "alloc.h"
 #include "command.h"
 #include "do-ifP.h"
index b20f8a24414ad7887483cc5bd0da636c55f31ba3..97fbdf8b951eb10225a7ebe6674e84a3693da952 100644 (file)
@@ -19,7 +19,6 @@
 
 #include <config.h>
 #include "main.h"
-#include <assert.h>
 #include <stdio.h>
 #include "cmdline.h"
 #include "command.h"
@@ -28,7 +27,6 @@
 #include "glob.h"
 #include "lexer.h"
 #include "output.h"
-#include "version.h"
 #include <signal.h>
 
 #include <stdlib.h>
@@ -167,36 +165,5 @@ handle_error (int code)
 void 
 bug_handler(int sig UNUSED)
 {
-  fprintf(stderr,
-         "******************************************************************\n"
-         "You have discovered a bug in PSPP.\n\n"
-         "  Please report this, by sending "
-         "an email to " PACKAGE_BUGREPORT ",\n"
-         "explaining what you were doing when this happened, and including\n"
-         "a sample of your input file which caused it.\n");
-
-  fprintf(stderr,
-         "Also, please copy the following lines into your bug report:\n\n"
-         "bare_version:        %s\n" 
-         "version:             %s\n"
-         "stat_version:        %s\n"
-         "host_system:         %s\n"
-         "build_system:        %s\n"
-         "default_config_path: %s\n"
-         "include_path:        %s\n"
-         "groff_font_path:     %s\n"
-         "locale_dir:          %s\n"
-         "******************************************************************\n",
-         bare_version,         
-         version,
-         stat_version,
-         host_system,        
-         build_system,
-         default_config_path,
-         include_path, 
-         groff_font_path,
-         locale_dir);     
-
-  exit(-1);
+  request_bug_report_and_abort("Segmentation Violation");
 }
-
index 5835e8229286d7072039ec9935cc2a8b0bcbcf32..7d8b55f36ef3ec5d218c958600c975dfd1c81052 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <stdlib.h>
 #include <ctype.h>
 #include <float.h>
index 42911f1847011ddcd2578c9882c7f9f0e8e37520..4631e7d809cf4aa5654f63309598bfee756d0524 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include "matrix.h"
-#include <assert.h>
+#include "error.h"
 #include <stdlib.h>
 #include "alloc.h"
 \f
index bf7b19765e63d998ffe4258d11b9b02e29cfbb7e..846448b1ddc7fd4256ce241d011cce6ddb0d681b 100644 (file)
@@ -20,7 +20,7 @@
 #include <config.h>
 #include <stdlib.h>
 #include <stdio.h>
-#include <assert.h>
+#include "error.h"
 #include "alloc.h"
 #include "command.h"
 #include "hash.h"
index 210d2389f81fe25e803b6f424100c6fa7dac63f9..66ceb9ce0886c1d92103de8d860cabecaf4aace3 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <stdlib.h>
 #include "command.h"
 #include "error.h"
index f12cb7ed63e30e32c27f4df0fb833460ce99c686..aab05c6e0e029083241123c0cfa3e19e5c82cc89 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include <stdlib.h>
-#include <assert.h>
+#include "error.h"
 #include "algorithm.h"
 #include "alloc.h"
 #include "bitvector.h"
index 8031d65d2070954aad0cad8b538c9cd1f94727fe..2b42d2cfe2b720eb5749377323b31e9cf8d72db4 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <stdlib.h>
 #include "command.h"
 #include "error.h"
index bdbbf30a81427b5f19d2492f48682c26536ba082..c0c4e0b022339f4e1f1a978b611dca96d00925ad 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include "output.h"
-#include <assert.h>
+#include "error.h"
 #include <stdlib.h>
 #include <stdio.h>
 #include <errno.h>
index 8f9e9e4ec4617349e18b8448721acd5435f2983a..ab33e700f724ab2c5c6562593be0351a673a3e17 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include "pfm.h"
-#include <assert.h>
+#include "error.h"
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
index e229072ea5578678e0bfe51c3ac2042e7872c2e5..1d553ed7875d774aa5912f07125304638371c369 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include "pfm.h"
-#include <assert.h>
+#include "error.h"
 #include <ctype.h>
 #include <errno.h>
 #include <float.h>
index 0123a8b955ed18c5190aa502aba9448130703653..d3b536b2c240d7b681f3456c5880ca677f6c9b2d 100644 (file)
@@ -21,7 +21,7 @@
 #include <config.h>
 #endif
 #include "pool.h"
-#include <assert.h>
+#include "error.h"
 #include <stdlib.h>
 #include "alloc.h"
 #include "str.h"
index 196e7120cec4f0118cda4331f8bc74b90f11bdb7..2bfc3fd76298172345c284804229b5d5bf3f5793 100644 (file)
@@ -23,7 +23,7 @@
 #if !NO_POSTSCRIPT
 
 #include <ctype.h>
-#include <assert.h>
+#include "error.h"
 #include <errno.h>
 #include <limits.h>
 #include <stdlib.h>
index 7f93f13f717296d31d11530a05011f7ba1030002..43cff102387a397a010c0a89cfc74270a16c240c 100644 (file)
@@ -20,7 +20,7 @@
 /* FIXME: seems like a lot of code duplication with data-list.c. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <stdlib.h>
 #include "alloc.h"
 #include "command.h"
index 13e8013e89ab9d17cb7b0b3fa25517e6cc7869b2..aaf3472799f10d78f49223802923eff117a27553 100644 (file)
--- a/src/q2c.c
+++ b/src/q2c.c
@@ -2027,7 +2027,6 @@ main (int argc, char *argv[])
        {
          indent = 0;
 
-         dump (0, "#include <assert.h>");
          dump (0, "#include <stdlib.h>");
          dump (0, "#include \"alloc.h\"");
          dump (0, "#include \"error.h\"");
index 0352b602bb585a1b0e48ea95774aa1b0f36a87e8..e6db94c1501f06f606d8fc1af86c4897dcc8d43f 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include "random.h"
-#include <assert.h>
+#include "error.h"
 #include <inttypes.h>
 #include <limits.h>
 #include <math.h>
index e2df650f26ecc25fd59312970f4aa0a03ef7a337..12f682c8684a77627856ab7223a6369916eb8c15 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <ctype.h>
 #include <math.h>
 #include <stdlib.h>
index 4b81f90484c69bd83f6c112705e915dd1093640e..70243468b743888633f82e14d974c71e53d8820b 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include <stdlib.h>
-#include <assert.h>
+#include "error.h"
 #include "alloc.h"
 #include "command.h"
 #include "error.h"
index c3236744a298b6dfd402207dfac404aaa7e28fff..401a50ec0b6d8567987401a60adb9754f76ec8d5 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include "repeat.h"
-#include <assert.h>
+#include "error.h"
 #include <ctype.h>
 #include <math.h>
 #include <stdlib.h>
index e9f3ddedee4965517acdd222a42e1ae82a976d2c..2d1a1699c0b451421a7ea91db04dbda6bff93364 100644 (file)
--- a/src/set.q
+++ b/src/set.q
@@ -60,7 +60,7 @@
    
 #include <config.h>
 #include "settings.h"
-#include <assert.h>
+#include "error.h"
 #include <stdio.h>
 #include <errno.h>
 #include <stdlib.h>
index 01f6330f19ca0403ebf9623eecf279d856284416..fad27c94a8d13537f37c4692550fc5e19f977c51 100644 (file)
@@ -20,7 +20,7 @@
 #include <config.h>
 #include "sfm.h"
 #include "sfmP.h"
-#include <assert.h>
+#include "error.h"
 #include <stdlib.h>
 #include <ctype.h>
 #include <errno.h>
index 64d364abb6cd753c760b327e03d48278d6a3a0c6..3cfb1f5cc08115ec406d122d6f3e7953cafb2d62 100644 (file)
@@ -20,7 +20,7 @@
 #include <config.h>
 #include "sfm.h"
 #include "sfmP.h"
-#include <assert.h>
+#include "error.h"
 #include <stdlib.h>
 #include <ctype.h>
 #include <errno.h>
index f6623e2710ac4b28cdd30798772b10a61bfb4351..c74492bcb9bd40149866f8993f42aa28c0560fc2 100644 (file)
--- a/src/som.c
+++ b/src/som.c
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include "som.h"
-#include <assert.h>
+#include "error.h"
 #include <stdio.h>
 #include <stdlib.h>
 #include "output.h"
index cc0a833f696348459585c48ec56458baad1a8ec4..fd636ac8e8f70d631d8b2b3b5889bb4fe8a1e34d 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include "sort.h"
-#include <assert.h>
+#include "error.h"
 #include <stdio.h>
 #include <stdlib.h>
 #include <errno.h>
index 98a8e52e3caf543b1afe47313ca59e9fcb98a732..e807f36dfa803ea1c393737e415a932964b9a93a 100644 (file)
--- a/src/str.c
+++ b/src/str.c
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include "str.h"
-#include <assert.h>
+#include "error.h"
 #include <ctype.h>
 #include <limits.h>
 #include <stdlib.h>
index c67c184e2d037767e7ef0d31a3e945fb56db91dc..5a91fc39b4e8d05b3bb9f3780dc5e84e11f014dd 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <ctype.h>
 #include <stdlib.h>
 #include "algorithm.h"
index 8cef9053b1880250157b62934b7810fae71a4b4e..f741bd1e1ff1a42bfb92684136d8e81ddc376a70 100644 (file)
@@ -20,7 +20,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <stdio.h>
 #include <stdlib.h>
 #include <math.h>
@@ -77,10 +77,8 @@ static enum comparison criteria[2];
 static int n_pairs = 0 ;
 struct pair 
 {
-#if 1
   /* The variables comprising the pair */
   struct variable *v[2];
-#endif
 
   /* The number of valid variable pairs */
   double n;
@@ -280,6 +278,12 @@ cmd_t_test(void)
          hsh_destroy(hash);
        }
     }
+  else if ( !cmd.sbc_variables) 
+    {
+      msg(SE, _("One or more VARIABLES must be specified."));
+      return CMD_FAILURE;
+    }
+
 
   /* If /MISSING=INCLUDE is set, then user missing values are ignored */
   if (cmd.incl == TTS_INCLUDE ) 
@@ -1633,16 +1637,8 @@ paired_calc (struct ccase *c, void *aux UNUSED)
        pairs[i].ssq[0] += weight * sqr(val0->f);
        pairs[i].ssq[1] += weight * sqr(val1->f);
 
-#if 0
-       pairs[i].correlation += weight * 
-         ( val0->f - pairs[i].v[0]->p.t_t.ugs.mean )
-         *
-         ( val1->f - pairs[i].v[1]->p.t_t.ugs.mean );
-#endif
-
        pairs[i].sum_of_prod += weight * val0->f * val1->f ;
 
-
        pairs[i].sum_of_diffs += weight * ( val0->f - val1->f ) ;
        pairs[i].ssq_diffs += weight * sqr(val0->f - val1->f);
       }
@@ -1680,16 +1676,8 @@ paired_postcalc (void *aux UNUSED)
       pairs[i].correlation /= pairs[i].std_dev[0] * pairs[i].std_dev[1];
       pairs[i].correlation *= pairs[i].n / ( pairs[i].n - 1 );
       
-#if 0
-      pairs[i].correlation /= pairs[i].v[0]->p.t_t.ugs.std_dev * 
-                              pairs[i].v[1]->p.t_t.ugs.std_dev ;
-      pairs[i].correlation /= n - 1; 
-#endif      
-
-
       pairs[i].mean_diff = pairs[i].sum_of_diffs / n ;
 
-
       pairs[i].std_dev_diff = sqrt (  n / (n - 1) * (
                                    ( pairs[i].ssq_diffs / n )
                                    - 
index 118a77cd68df7f26b84af4c32b55a836c3d9a250..82df4cd23ab8d54d6e46327faee124eeaaa5597b 100644 (file)
--- a/src/tab.c
+++ b/src/tab.c
 #include <config.h>
 #include "tab.h"
 #include <ctype.h>
-#include <assert.h>
 #include <stdarg.h>
 #include <limits.h>
 #include <stdlib.h>
+#include "error.h"
 #include "alloc.h"
 #include "command.h"
 #include "format.h"
index 70d86cab285e2b3f3b0fd9a8f4db806e2b83fa40..c04ce764d99b18a99274fe2adfa9503f9f5854b7 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <stddef.h>
 #include <stdlib.h>
 #include "alloc.h"
index 882f26e625933b7364510bb112ef57f2e0edf2af..9d05e77f83c528a067f300bb2d0c384b029f3b58 100644 (file)
@@ -57,12 +57,19 @@ do_value_labels (int erase)
 {
   struct variable **vars; /* Variable list. */
   int var_cnt;            /* Number of variables. */
+  int parse_err=0;        /* true if error parsing variables */
 
   lex_match ('/');
   
   while (token != '.')
     {
-      parse_variables (default_dict, &vars, &var_cnt, PV_SAME_TYPE);
+      parse_err = !parse_variables (default_dict, &vars, &var_cnt, 
+                                   PV_SAME_TYPE) ;
+      if (var_cnt < 1)
+       {
+         free(vars);
+         return CMD_FAILURE;
+       }
       if (!verify_val_labs (vars, var_cnt))
         goto lossage;
       if (erase)
@@ -85,7 +92,7 @@ do_value_labels (int erase)
       return CMD_TRAILING_GARBAGE;
     }
 
-  return CMD_SUCCESS;
+  return parse_err ? CMD_PART_SUCCESS_MAYBE : CMD_SUCCESS;
 
  lossage:
   free (vars);
index 9c7640866ceb209e5a77c38cd470228328d156f8..404f7f6844721e0e6d45476714c2ae404f8b534f 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include "value-labels.h"
-#include <assert.h>
+#include "error.h"
 #include <stdlib.h>
 #include <string.h>
 #include "alloc.h"
index 00453767b2aefaea346363a1eab1f5294e9bf6ca..c0730022354f2ab88dfe278b4d6949fb61bc04b9 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <config.h>
 #include "var.h"
-#include <assert.h>
+#include "error.h"
 #include <stdlib.h>
 #include "alloc.h"
 #include "command.h"
index 6f3d7f3e279b3fd6745cc6dead6154ac98bf72b9..143ad171bccd044c687de56eae05f1c254f89bfb 100644 (file)
@@ -19,7 +19,6 @@
 
 #include <config.h>
 #include "var.h"
-#include <assert.h>
 #include <ctype.h>
 #include <stdlib.h>
 #include "alloc.h"
index 99b3423af1467ff1aea250bd73221749bb3e88bc..80582f76b3db459e34342af957e2a6ba35b446d8 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <stdlib.h>
 #include "alloc.h"
 #include "command.h"
index b5d2a8d3564e76641e692bace61df3fe3befcf76..1ea4211e32c521065c6ab866ec2d92eb14e4bdd3 100644 (file)
--- a/src/vfm.c
+++ b/src/vfm.c
@@ -20,7 +20,7 @@
 #include <config.h>
 #include "vfm.h"
 #include "vfmP.h"
-#include <assert.h>
+#include "error.h"
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
index 66b7e615ac0aa7ca49f6143793c4be2d174450c0..7fac10cca7f4af6f193e38bdf616221c350e3300 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "error.h"
 #include <stdio.h>
 #include "command.h"
 #include "error.h"
index 60ffbaeb29dfb52021240b480d7c9fcdca9b923e..9b2feee2535786b3fbc4a2787b5a185c2cd69710 100644 (file)
@@ -40,7 +40,9 @@ TESTS = command/aggregate.sh \
        bugs/crosstabs.sh \
        bugs/data-crash.sh \
        bugs/random.sh \
-       bugs/temporary.sh
+       bugs/t-test.sh \
+       bugs/temporary.sh \
+       bugs/val-labs.sh
 
 noinst_PROGRAMS = gengarbage
 
diff --git a/tests/bugs/t-test.sh b/tests/bugs/t-test.sh
new file mode 100755 (executable)
index 0000000..7896b77
--- /dev/null
@@ -0,0 +1,70 @@
+#!/bin/sh
+
+# This program tests for a bug which caused T-TEST to 
+# crash when given invalid syntax
+
+
+TEMPDIR=/tmp/pspp-tst-$$
+
+here=`pwd`;
+
+# ensure that top_srcdir is absolute
+cd $top_srcdir; top_srcdir=`pwd`
+
+export STAT_CONFIG_PATH=$top_srcdir/config
+
+
+cleanup()
+{
+     rm -rf $TEMPDIR
+}
+
+
+fail()
+{
+    echo $activity
+    echo FAILED
+    cleanup;
+    exit 1;
+}
+
+
+no_result()
+{
+    echo $activity
+    echo NO RESULT;
+    cleanup;
+    exit 2;
+}
+
+pass()
+{
+    cleanup;
+    exit 0;
+}
+
+mkdir -p $TEMPDIR
+
+cd $TEMPDIR
+
+activity="create program"
+cat > $TEMPDIR/rnd.sps <<EOF
+DATA LIST LIST /id * a * .
+BEGIN DATA.
+1 3.5
+2 2.0
+3 2.0
+4 3.5
+5 3.0
+6 4.0
+END DATA.
+
+T-TEST /testval=2.0 .
+T-TEST /groups=id(3) .
+EOF
+if [ $? -ne 0 ] ; then no_result ; fi
+
+$SUPERVISOR $here/../src/pspp -o raw-ascii $TEMPDIR/rnd.sps > /dev/null
+if [ $? -ne 1 ] ; then fail ; fi
+
+pass;
diff --git a/tests/bugs/val-labs.sh b/tests/bugs/val-labs.sh
new file mode 100755 (executable)
index 0000000..fc052b7
--- /dev/null
@@ -0,0 +1,70 @@
+#!/bin/sh
+
+# This program tests for a bug which caused VALUE LABELS to 
+# crash when given invalid syntax
+
+
+TEMPDIR=/tmp/pspp-tst-$$
+
+here=`pwd`;
+
+# ensure that top_srcdir is absolute
+cd $top_srcdir; top_srcdir=`pwd`
+
+export STAT_CONFIG_PATH=$top_srcdir/config
+
+
+cleanup()
+{
+     rm -rf $TEMPDIR
+}
+
+
+fail()
+{
+    echo $activity
+    echo FAILED
+    cleanup;
+    exit 1;
+}
+
+
+no_result()
+{
+    echo $activity
+    echo NO RESULT;
+    cleanup;
+    exit 2;
+}
+
+pass()
+{
+    cleanup;
+    exit 0;
+}
+
+mkdir -p $TEMPDIR
+
+cd $TEMPDIR
+
+activity="create program"
+cat > $TEMPDIR/rnd.sps <<EOF
+DATA LIST LIST /a * pref * .
+BEGIN DATA.
+    1.00     1.00    
+    1.00     2.00    
+    2.00     1.00    
+    2.00     2.00    
+END DATA.
+
+VALUE LABELS /var=a 'label for a'.
+
+
+
+EOF
+if [ $? -ne 0 ] ; then no_result ; fi
+
+$SUPERVISOR $here/../src/pspp -o raw-ascii $TEMPDIR/rnd.sps > /dev/null
+if [ $? -ne 1 ] ; then fail ; fi
+
+pass;