Handle case of a lookup table as the active file.
authorBen Pfaff <blp@gnu.org>
Wed, 25 May 2005 04:54:54 +0000 (04:54 +0000)
committerBen Pfaff <blp@gnu.org>
Wed, 25 May 2005 04:54:54 +0000 (04:54 +0000)
src/ChangeLog
src/get.c
tests/command/match-files.sh

index ac2affb839622010524a7e7629633b469246fba3..9667a24e1fef5c20ac5c3e8caf3bede7304d3ff7 100644 (file)
@@ -1,3 +1,8 @@
+Tue May 24 21:52:55 2005  Ben Pfaff  <blp@gnu.org>
+
+       * get.c: (mtf_processing) Handle case of a lookup table as the
+       active file.  Thanks to John Darrington for reporting this bug.
+
 Wed May 25 10:27:02 WST 2005 John Darrington <john@darrington.wattle.id.au>
        
        * alloc.c alloc.h: (xcalloc) changed signature to imitate the
index 0658ab247dceacb37c96378f8df5a969f428c955..fd9492210ab782544186749f1d26ddce7420df37 100644 (file)
--- a/src/get.c
+++ b/src/get.c
@@ -1201,7 +1201,9 @@ mtf_processing (struct ccase *c, void *mtf_)
   bool read_active_file;
 
   assert (mtf->head != NULL);
-  assert (mtf->head->type == MTF_FILE);
+  if (mtf->head->type == MTF_TABLE)
+    return 1;
+  
   do
     {
       struct mtf_file *min_head, *min_tail; /* Files with minimum BY values. */
index 77fb3ce5c536fc2cd26ef0507f6ab74d35e0bf32..bb4729391cbd9e248bcd3924ae9ec0b3a74dc852 100755 (executable)
@@ -205,4 +205,43 @@ A B C D E F
 EOF
 if [ $? -ne 0 ] ; then fail ; fi
 
+# Test bug handling TABLE from active file found by John Darrington.
+name="active-table"
+activity="create $name.pspp"
+cat > $name.pspp <<EOF
+DATA LIST LIST NOTABLE /x * y *.
+BEGIN DATA
+3 30
+2 21
+1 22
+END DATA.
+
+SAVE OUTFILE='bar.sav'.
+
+DATA LIST LIST NOTABLE /x * z *.
+BEGIN DATA
+3 8
+2 9
+END DATA.
+
+MATCH FILES TABLE=* /FILE='bar.sav' /BY=x.
+LIST.
+EOF
+if [ $? -ne 0 ] ; then no_result ; fi
+
+activity="run $name.pspp"
+$SUPERVISOR $here/../src/pspp -o raw-ascii $name.pspp >/dev/null 2>&1
+if [ $? -ne 0 ] ; then no_result ; fi
+
+activity="check $name output"
+diff -b -w -B - pspp.list <<EOF
+        x        z        y
+ -------- -------- --------
+     3.00     8.00    30.00 
+     2.00      .      21.00 
+     1.00      .      22.00 
+EOF
+if [ $? -ne 0 ] ; then fail ; fi
+
+
 pass;