+2007-07-24 Ben Pfaff <blp@gnu.org>
+
+ * flip.c (struct flip_pgm): Remove `case_size' member (now
+ unused).
+ (cmd_flip): Pass var_cnt as number of cases instead of case_cnt,
+ to fix bug #20494. Don't assign to `case_size' member, which was
+ unused after assignment.
+ (build_dictionary): When NEWNAMES not used, get the number of
+ variables right, to fix bug #20493.
+
2007-07-10 Jason Stover <jhs@math.gcsu.edu>
* glm.q: Initial version of the GLM procedure.
int *idx_to_fv; /* var[]->index to compacted sink case fv. */
size_t var_cnt; /* Number of elements in `var'. */
int case_cnt; /* Pre-flip case count. */
- size_t case_size; /* Post-flip bytes per case. */
struct variable *new_names; /* Variable containing new variable names. */
struct varname *new_names_head; /* First new variable. */
{
lex_match (lexer, '=');
if (!parse_variables_const (lexer, dict, &flip->var, &flip->var_cnt,
- PV_NO_DUPLICATE))
+ PV_NO_DUPLICATE))
goto error;
lex_match (lexer, '/');
}
}
}
- output_buf = pool_nalloc (flip->pool,
- flip->var_cnt, sizeof *output_buf);
+ output_buf = pool_nalloc (flip->pool, flip->var_cnt, sizeof *output_buf);
flip->file = pool_tmpfile (flip->pool);
if (flip->file == NULL)
proc_discard_active_file (ds);
goto error;
}
- flip->case_size = dict_get_case_size (dict);
/* Set up flipped data for reading. */
reader = casereader_create_sequential (NULL, dict_get_next_value_idx (dict),
- flip->case_cnt,
+ flip->var_cnt,
&flip_casereader_class, flip);
proc_set_active_file_data (ds, reader);
return lex_end_of_command (lexer);
return false;
}
- for (i = 0; i < flip->case_cnt; i++)
+ for (i = 0; i < flip->case_cnt - 1; i++)
{
struct variable *v;
char s[SHORT_NAME_LEN + 1];
+2007-07-24 Ben Pfaff <blp@gnu.org>
+
+ * tests/command/flip.sh: Add tests to avoid regression on bugs
+ #20493, #20494.
+
2007-07-22 Ben Pfaff <blp@gnu.org>
* command/very-long-strings.sh: Test both compressed and
activity="create flip.stat"
cat > $TEMPDIR/flip.stat <<EOF
-data list /N 1 (a) A B C D 2-9.
+* Test FLIP with NEWNAME or, equivalently, with a variable named CASE_LBL.
+data list notable /N 1 (a) A B C D 2-9.
list.
begin data.
v 1 2 3 4 5
list.
flip.
list.
+
+* Test FLIP without NEWNAME.
+data list list notable /v1 to v10.
+format all(f2).
+begin data.
+1 2 3 4 5 6 7 8 9 10
+4 5 6 7 8 9 10 11 12 13
+end data.
+
+list.
+
+flip.
+list.
EOF
if [ $? -ne 0 ] ; then no_result ; fi
activity="compare output"
perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.list
diff -b $TEMPDIR/pspp.list - << EOF
-1.1 DATA LIST. Reading 1 record from INLINE.
-+--------+------+-------+------+
-|Variable|Record|Columns|Format|
-#========#======#=======#======#
-|N | 1| 1- 1|A1 |
-|A | 1| 2- 3|F2.0 |
-|B | 1| 4- 5|F2.0 |
-|C | 1| 6- 7|F2.0 |
-|D | 1| 8- 9|F2.0 |
-+--------+------+-------+------+
N A B C D
- -- -- -- --
v 1 2 3 4
X 11.00 12.00 13.00 14.00
Y 16.00 17.00 18.00 19.00
Z 21.00 22.00 23.00 24.00
+v1 v2 v3 v4 v5 v6 v7 v8 v9 v10
+-- -- -- -- -- -- -- -- -- ---
+ 1 2 3 4 5 6 7 8 9 10
+ 4 5 6 7 8 9 10 11 12 13
+CASE_LBL VAR000 VAR001
+-------- -------- --------
+v1 1.00 4.00
+v2 2.00 5.00
+v3 3.00 6.00
+v4 4.00 7.00
+v5 5.00 8.00
+v6 6.00 9.00
+v7 7.00 10.00
+v8 8.00 11.00
+v9 9.00 12.00
+v10 10.00 13.00
EOF
if [ $? -ne 0 ] ; then fail ; fi