Fixed bug #11307
authorJohn Darrington <john@darrington.wattle.id.au>
Wed, 5 Jan 2005 14:45:54 +0000 (14:45 +0000)
committerJohn Darrington <john@darrington.wattle.id.au>
Wed, 5 Jan 2005 14:45:54 +0000 (14:45 +0000)
src/ChangeLog
src/case.h
tests/Makefile.am
tests/bugs/big-input.sh [new file with mode: 0755]

index 801c825fb33e0f928e6b23fc5196fa17687802d0..39ba57a45c03ea778592f70e3caba0c968695f24 100644 (file)
@@ -1,3 +1,7 @@
+Wed Jan  5 22:42:26 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * case.h Fixed bug # 11307
+       
 Wed Jan  5 08:30:48 WST 2005 John Darrington <john@darrington.wattle.id.au>
 
        * val-labs.c Fixed bug which caused a crash if VALUE LABELS had
index 7312aa9458942e9b6780e47b78476c56887ad46b..6af3aaf8d56a3478fb5cbc132186b41cc413d1ac 100644 (file)
@@ -131,10 +131,10 @@ case_copy (struct ccase *dst, size_t dst_idx,
 
 static inline void
 case_to_values (const struct ccase *c, union value *output,
-                size_t output_size UNUSED
+                size_t output_size ) 
 {
   memcpy (output, c->case_data->values,
-          c->case_data->value_cnt * sizeof *output);
+          output_size * sizeof *output);
 }
 
 static inline void
index a2ae409089c1f460834a832f5ab0fa1a3444eb8e..9b2946eed43f8002a338d76389c220d0c953fb12 100644 (file)
@@ -15,6 +15,7 @@ TESTS = \
        command/file-label.sh \
        command/filter.sh \
        command/flip.sh \
+       command/import-export.sh \
        command/lag.sh \
        command/list.sh \
        command/loop.sh \
@@ -41,6 +42,7 @@ TESTS = \
        command/use.sh \
        command/weight.sh \
        bugs/alpha-freq.sh \
+       bugs/big-input.sh \
        bugs/comment-at-eof.sh \
        bugs/compute-fmt.sh \
        bugs/crosstabs.sh \
diff --git a/tests/bugs/big-input.sh b/tests/bugs/big-input.sh
new file mode 100755 (executable)
index 0000000..84f7abe
--- /dev/null
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+# This program tests for a bug which caused a crash when 
+# a large number of cases where presented.
+
+
+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/foo.sps <<EOF
+INPUT PROGRAM.
+LOOP #I=1 TO 50000.
+COMPUTE X=NORMAL(10).
+END CASE.
+END LOOP.
+END FILE.
+END INPUT PROGRAM.
+
+
+EXAMINE /x
+/STATISTICS=DESCRIPTIVES.
+EOF
+if [ $? -ne 0 ] ; then no_result ; fi
+
+$SUPERVISOR $here/../src/pspp -o raw-ascii $TEMPDIR/foo.sps > /dev/null
+if [ $? -ne 1 ] ; then fail ; fi
+
+pass;