From: Ben Pfaff Date: Thu, 26 Jul 2007 01:52:04 +0000 (+0000) Subject: Fix bug #17100. X-Git-Tag: v0.6.0~349 X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bcbfd7478b6d81f44cf9b046a27e38be8dc62696;p=pspp-builds.git Fix bug #17100. * command/data-list.sh: Add tests for multi-record DATA LIST with and without empty trailing record. * data-list.c (read_from_data_list_fixed): Handle multi-record DATA LIST correctly. --- diff --git a/src/language/data-io/ChangeLog b/src/language/data-io/ChangeLog index ef323512..c1b9aaf1 100644 --- a/src/language/data-io/ChangeLog +++ b/src/language/data-io/ChangeLog @@ -1,3 +1,9 @@ +2007-07-25 Ben Pfaff + + Fix bug #17100. + * data-list.c (read_from_data_list_fixed): Handle multi-record + DATA LIST correctly. + 2007-07-11 Ben Pfaff * get.c (map_case): Create destination case instead of leaving it diff --git a/src/language/data-io/data-list.c b/src/language/data-io/data-list.c index 76adb00c..9f77ed8d 100644 --- a/src/language/data-io/data-list.c +++ b/src/language/data-io/data-list.c @@ -683,9 +683,15 @@ read_from_data_list_fixed (const struct data_list_pgm *dls, struct ccase *c) line = dfm_get_record (dls->reader); ll_for_each_continue (spec, struct dls_var_spec, ll, &dls->specs) - data_in (ss_substr (line, spec->first_column - 1, spec->input.w), - spec->input.type, spec->input.d, spec->first_column, - case_data_rw_idx (c, spec->fv), fmt_var_width (&spec->input)); + { + if (row < spec->record) + break; + + data_in (ss_substr (line, spec->first_column - 1, spec->input.w), + spec->input.type, spec->input.d, spec->first_column, + case_data_rw_idx (c, spec->fv), + fmt_var_width (&spec->input)); + } dfm_forward_record (dls->reader); } diff --git a/tests/ChangeLog b/tests/ChangeLog index 795da07e..2b9cf808 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,7 +1,13 @@ +2007-07-25 Ben Pfaff + + Fix bug #17100. + * command/data-list.sh: Add tests for multi-record DATA LIST with + and without empty trailing record. + 2007-07-24 Ben Pfaff - * tests/command/flip.sh: Add tests to avoid regression on bugs - #20493, #20494. + * command/flip.sh: Add tests to avoid regression on bugs #20493, + #20494. 2007-07-22 Ben Pfaff diff --git a/tests/command/data-list.sh b/tests/command/data-list.sh index d16521a1..01a682c1 100755 --- a/tests/command/data-list.sh +++ b/tests/command/data-list.sh @@ -102,6 +102,40 @@ begin data. 3 4 +end data. +list. + +* Test DATA LIST FIXED with multiple records. +data list fixed notable + /1 start 1-20 (adate) + /2 end 1-20 (adate) + /3 count 1-3. +begin data. +07-22-2007 +10-06-2007 +321 +07-14-1789 +08-26-1789 +4 +01-01-1972 +12-31-1999 +682 +end data. +list. + +* Test that DATA LIST FIXED works with an empty trailing record. +data list fixed notable records=2/x 1 y 2. +begin data. +12 + +34 + +56 + +78 + +90 + end data. list. EOF @@ -155,6 +189,18 @@ diff -b $TEMPDIR/pspp.list - << EOF . . 3.00 . . . . 4.00 . . . . + start end count +-------------------- -------------------- ----- + 07/22/2007 10/06/2007 321 + 07/14/1789 08/26/1789 4 + 01/01/1972 12/31/1999 682 +x y +- - +1 2 +3 4 +5 6 +7 8 +9 0 EOF if [ $? -ne 0 ] ; then fail ; fi