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.
Ben Pfaff [Wed, 8 May 2013 05:29:50 +0000 (22:29 -0700)]
psppire-cell-renderer-button: Translate coords before propagating event.
When propagating a right-click upward, the x and y coordinates in the
event are those for the button, not for the parent window, but the parent
window's signal handlers will expect that they are relative to the parent
window. This commit makes that so.
Without this commit, the following scenario occurs:
1. Open a dataset with at least two cases.
2. Switch to the Data View
3. Place the pointer over (say) the tenth row header button.
4. Click the left mouse button.
5. Click the right mouse button.
6. The popup menu appears (as it should), but row 1 gets selected instead
of row 10.
With this commit, in step 6 the correct row is selected.