Ben Pfaff [Sun, 26 May 2013 23:43:01 +0000 (16:43 -0700)]
Avoid letting data fields overflow in output and GUI.
When the output for data_out() is too big for the field width, it produces
output that consists of just asterisks: ******. This is OK when the
output is really going into a fixed-width space, such as the output for
PRINT and WRITE. But it is obnoxious if the output is going into PSPP
output or the GUI. This commit introduces a new function that typically
does not do this, and starts using it in output and the GUI.
Bug #35829.
Reported by John Darrington.
Bug #30731.
Reported by lavila <la@jump23.com>.
John Darrington [Sat, 25 May 2013 11:06:49 +0000 (13:06 +0200)]
Linear Regression Test: Provide more decimal places in test results.
This test previously had only 2 decimal places displayed, which
limited its ability to detect numerical errors. This change increases
the decimal places to 3.
The results for this test were checked against a pattern provided
by Olaf Nöhring.
Ben Pfaff [Tue, 21 May 2013 06:49:54 +0000 (23:49 -0700)]
DELETE VARIABLES: Fix crash with FILTER.
FILTER has the surprising property that it introduces a temporary
transformation, even if proc_make_temporary_transformations_permanent()
was previously called. This causes a crash if the procedure implementation
really relies on there being no temporary transformations.
This commit fixes the problem in the procedures I was able to identify as
having it, adds a comment to proc_make_temporary_transformations_permanent()
to make it a little less likely to happen again, and adds a test
specifically to check for regression on DELETE VARIABLES.
Ben Pfaff [Tue, 21 May 2013 05:54:31 +0000 (22:54 -0700)]
FLIP: Fix use-after-free and double frees with temporary transformations.
I originally thought this was a bug in FLIP, but it turned out that in
fact we just hadn't ever really tested
proc_make_temporary_transformations_permanent() properly with actual
transformations, and especially with adding a transformation after calling
proc_make_temporary_transformations_permanent().
The modified test should avoid regression for the bug.
John Darrington [Fri, 17 May 2013 14:24:31 +0000 (16:24 +0200)]
Sort items in datasheets dropdown box.
Before this change, the values in the data sheets dropdown
box appeared in a non-deterministic order (the order in
the underlying hash), which was inconvenient to users.
This change produces the values in sorted order.
John Darrington [Thu, 9 May 2013 09:28:12 +0000 (11:28 +0200)]
Fix stack corruption in ODS reader.
zip_reader_create takes a pointer to a struct string, which
is used to store error messages during zip operations. I had
been passing the address of a string declared as local variable
in ods_probe. However since the zip reader survives ods_probe,
this caused stack corruption in later read operations.
This change makes the string a member of the reader created (if any).
John Darrington [Thu, 9 May 2013 09:28:12 +0000 (11:28 +0200)]
Fix stack corruption in ODS reader.
zip_reader_create takes a pointer to a struct string, which
is used to store error messages during zip operations. I had
been passing the address of a string declared as local variable
in ods_probe. However since the zip reader survives ods_probe,
this caused stack corruption in later read operations.
This change makes the string a member of the reader created (if any).
John Darrington [Tue, 7 May 2013 13:52:44 +0000 (15:52 +0200)]
Spreadsheetreader: new function create_cell_ref and rename existing function with that name.
Rename convert_cell_ref to convert_cell_range which is a more accurate
description of the function, and add a new function, with the original
name of the function we've just renamed.
The new function (create_cell_ref) does just that.
Ben Pfaff [Thu, 9 May 2013 04:07:39 +0000 (21:07 -0700)]
psppire-cell-renderer-button: Do not update 'event->window'.
Commit 5b59146f8d0 (psppire-cell-renderer-button: Translate coords before
propagating event.) caused GDK and GTK+ warnings and criticals and a crash
if the scenario described in the bug report were repeated a number of
times. This change appears to fix the problem.