John Darrington [Wed, 18 Sep 2013 18:37:59 +0000 (20:37 +0200)]
Crosstabs: Use logarithms to calculate the product/quotients of factorials
Avoid overflow of large numbers resulting from factorials, by using the logarithms as
intermediate results
Ben Pfaff [Fri, 20 Sep 2013 06:39:53 +0000 (23:39 -0700)]
sys-file-reader: Add support for record 7, subtype 10.
Reported by Christoph Ruip with .sav file attached here:
http://lists.gnu.org/archive/html/bug-gnu-pspp/2013-09/msg00044.html
Ben Pfaff [Fri, 20 Sep 2013 05:32:58 +0000 (22:32 -0700)]
sys-file-info: Make cmd_sysfile_info() more flexible internally.
This change should not have any visible effect but does allow new rows to
be inserted between existing rows.
John Darrington [Mon, 16 Sep 2013 06:49:43 +0000 (08:49 +0200)]
FACTOR: Fix bug interpreting the /CRITERIA=ITERATE subcommand
John Darrington [Sat, 7 Sep 2013 05:55:40 +0000 (07:55 +0200)]
NEWS: Mention the new icons
John Darrington [Sat, 7 Sep 2013 05:12:59 +0000 (07:12 +0200)]
Make one of the icon sets a wildcard set.
We currently have two icon sets: A 16x16 and a 24x24 set. Previously,
we had been using the 16x16 set for menuitems and the 24x24 set for the
toolbar. However it appeared that windows uses the symbol GTK_ICON_SIZE_SMALL_TOOLBAR
instead of GTK_ICON_SIZE_LARGE_TOOLBAR, which meant no icons appeared in the
toolbar.
This change sets the 24x24 set as a "wildcard" set meaning it will be used for
all purposes except menuitems.
Ben Pfaff [Thu, 5 Sep 2013 04:42:59 +0000 (21:42 -0700)]
psppire-var-sheet: Add icons for role column too.
Some of the changes here reflect the way that all three combo box columns
now include a pixbuf, allowing greater code reuse.
Artwork contributed by Bastian Diaz.
John Darrington [Wed, 4 Sep 2013 17:32:33 +0000 (19:32 +0200)]
Change instances of GNM_SUPPORT to GNM_READ_SUPPORT
Commit
82c1097ab658e8c13ab3ad439970148defba6e19 used the preprocessor
symbol GNM_READ_SUPPORT but GNM_SUPPORT was the one set in the autconf
files. Hence some code was erroneously omitted.
This change uses GNM_READ_SUPPORT throughout which is consistent
with ODF_READ_SUPPORT
Ben Pfaff [Wed, 4 Sep 2013 04:54:05 +0000 (21:54 -0700)]
psppire-var-sheet: Add icons to combo boxes for alignment and measurement.
We can easily add them for roles, too, if we get icons for those.
Suggested by Bastian Diaz.
Ben Pfaff [Wed, 4 Sep 2013 04:52:55 +0000 (21:52 -0700)]
psppire-var-sheet: Factor out code into new function path_string_to_var().
An upcoming commit will add a second user.
Ben Pfaff [Wed, 4 Sep 2013 04:52:19 +0000 (21:52 -0700)]
psppire-var-sheet: Generalize get_var_align_stock_id().
This change allows finding a stock-id speculatively, without having a
variable on hand.
Ben Pfaff [Mon, 2 Sep 2013 23:14:28 +0000 (16:14 -0700)]
psppire-dictview: Generalize psppire_dict_view_get_var_measurement_stock_id().
This change allows finding a stock-id speculatively, without having a
variable on hand.
Ben Pfaff [Wed, 4 Sep 2013 04:56:23 +0000 (21:56 -0700)]
spreadsheet-reader: Avoid 'unused variable' warnings.
If ODS and GNM support are both unavailable then GCC warns here.
John Darrington [Tue, 3 Sep 2013 16:59:20 +0000 (18:59 +0200)]
Dont try to build in gnumeric/odf reader if the libraries are not installed
Ben Pfaff [Mon, 2 Sep 2013 20:00:30 +0000 (13:00 -0700)]
data-parser: A hard delimiter at end of line is not an empty field.
Until now, DATA LIST FREE(',') treated input like this:
1,2,
3,4,
as describing six fields, two of which were blank at the end of a line.
A bug report and subsequent experiments showed that in fact this is only
four fields, none of which is blank. This commit fixes the problem and
adds a new test that should avoid regression against this issue.
Reported by Samuel Afflerbach.
Ben Pfaff [Tue, 27 Aug 2013 05:05:21 +0000 (22:05 -0700)]
VARIABLE ROLE: Document the format and add a test.
Ben Pfaff [Tue, 27 Aug 2013 05:04:59 +0000 (22:04 -0700)]
VARIABLE ROLE: Use correct system file representation.
Thanks to Paul Vella, Alan Mead, and Bastián Díaz for helping with this.
Ben Pfaff [Mon, 26 Aug 2013 05:57:56 +0000 (22:57 -0700)]
VARIABLE ROLE: New command.
Also adds GUI support.
The system file representation for variable roles is really just an
educated guess. I am going to ask for assistance in confirming the
representation.
Ben Pfaff [Sun, 25 Aug 2013 18:23:50 +0000 (11:23 -0700)]
gui: Remove declarations of variables not defined anywhere.
John Darrington [Sat, 17 Aug 2013 10:48:43 +0000 (12:48 +0200)]
Added url for ODS to the documentation
John Darrington [Sat, 17 Aug 2013 10:45:34 +0000 (12:45 +0200)]
Smake: Move the svg2png function to its own $call
Ben Pfaff [Fri, 16 Aug 2013 05:35:19 +0000 (22:35 -0700)]
lexer: Rename LEX_ERROR_INTERACTIVE to LEX_ERROR_TERMINAL, change default
The LEX_ERROR_INTERACTIVE error handling mode really only makes sense for
reading from a terminal, where we know we're getting one line at a time
and not partial lines. Unfortunately LEX_ERROR_INTERACTIVE was the default
and it was getting used as such in the GUI for reading from syntax files.
This meant that if there was an error in the GUI then the current buffer
(which might be any arbitrary chunk of syntax) was being discarded, which
caused terrible confusion.
This commit changes the default to LEX_ERROR_CONTINUE, which works
in a reasonable fashion regardless of the input source. It also renames
LEX_ERROR_INTERACTIVE to LEX_ERROR_TERMINAL to make it clear that that's
the only reasonable use.
Reported by Thambu David <thambu@cmcvellore.ac.in>, archived at:
http://lists.gnu.org/archive/html/pspp-users/2013-08/msg00019.html
John Darrington [Tue, 13 Aug 2013 06:41:39 +0000 (08:41 +0200)]
Deleted legacy icons
Ben Pfaff [Mon, 12 Aug 2013 04:56:52 +0000 (21:56 -0700)]
psppire-var-sheet: Hard-code size of pixbuf cells.
Otherwise the icons disappear if the sheet is initially empty, because
there's no icon for an empty row and thus nothing to make the pixbuf cells
nonzero size.
Reported by Bastian Diaz.
Ben Pfaff [Mon, 12 Aug 2013 04:55:42 +0000 (21:55 -0700)]
psppire: Relocate icon files also.
Otherwise the icons can't be found with --enable-relocatable when the
program is not installed in the normal system location.
Ben Pfaff [Sun, 11 Aug 2013 17:37:08 +0000 (10:37 -0700)]
doc: Clarify that DO REPEAT only substitutes whole words.
Based on this conversation:
https://lists.gnu.org/archive/html/pspp-users/2013-08/msg00009.html
Ben Pfaff [Sun, 11 Aug 2013 15:25:08 +0000 (08:25 -0700)]
Makefiles: Use $(LTLIBREADLINE) instead of $(LIBREADLINE).
Fixes a link failure with -Wl,--as-needed.
Reported by Sebastien Fabbro.
Bug #39707.
John Darrington [Wed, 7 Aug 2013 17:07:25 +0000 (19:07 +0200)]
src/output/table.h: Rename class -> klass
This makes it possible to include this file in C++ compiled programs.
John Darrington [Sun, 11 Aug 2013 06:53:52 +0000 (08:53 +0200)]
Fixed bug in command line parser
John Darrington [Sun, 11 Aug 2013 05:40:27 +0000 (07:40 +0200)]
Reduce the possibility of translator errors
Ben Pfaff [Sat, 10 Aug 2013 16:48:32 +0000 (09:48 -0700)]
gui: Restore icons deleted in error.
These icons were deleted by commit
caa467c9a26a7 (gui: Update artwork.)
even though they were still in use. This commit restores them and allows
"make -f Smake" to complete without error.
John Darrington [Fri, 9 Aug 2013 07:53:56 +0000 (09:53 +0200)]
Deleted some files which do not seem to serve any purpose
John Darrington [Thu, 8 Aug 2013 16:05:30 +0000 (18:05 +0200)]
Remove legacy icons
John Darrington [Thu, 8 Aug 2013 16:04:06 +0000 (18:04 +0200)]
Added the new "about-logo"
John Darrington [Wed, 7 Aug 2013 06:22:43 +0000 (08:22 +0200)]
Smake: Add appropriate dependencies to manifest and icon-names targets
Bastián Díaz [Wed, 7 Aug 2013 06:16:26 +0000 (02:16 -0400)]
gui: Update artwork.
John Darrington [Mon, 5 Aug 2013 18:30:43 +0000 (20:30 +0200)]
Added new icons and made them stock items.
Added the new artwork by Bastian Diaz, and created stock items for them.
Used a few of these stock items where appropriate.
Ben Pfaff [Mon, 5 Aug 2013 02:42:29 +0000 (19:42 -0700)]
encoding-guesser: Fix bug in parsing fallback encodings.
The encoding guesser originally used UTF-8 as a fallback in situations
where it had already figured out that UTF-8 couldn't be right. Commit
d6c75296 (encoding-guesser: Fall back to windows-1252 when UTF-8 can't be
right.) fixed this, by falling back to window-1252 when UTF-8 was known to
be wrong, but it also introduced a bug where this change to the fallback
encoding occurred even when UTF-8 had not be determined to be wrong. This
commit fixes that problem.
Reported by John Darrington.
Ben Pfaff [Sat, 3 Aug 2013 21:48:36 +0000 (14:48 -0700)]
sys-file-reader: Accept measurement value of zero without complaint.
SPSS 14 seemed to output a measurement value of 0 for string variables,
but SPSS 21 does the same thing for numeric variables. We might as well
accept it.
Reported by Mindaugus.
Bug #39502
Ben Pfaff [Sat, 3 Aug 2013 21:16:22 +0000 (14:16 -0700)]
sys-file-reader: Ignore subtype 24 written by SPSS 21.
Reported by Mindaugus.
Ben Pfaff [Sat, 3 Aug 2013 19:20:46 +0000 (12:20 -0700)]
sys-file-reader: Handle SPSS 21 change in representation of LOWEST.
Thanks to Mindaugus for reporting this issue.
Bug #39502.
Ben Pfaff [Sat, 3 Aug 2013 18:59:07 +0000 (11:59 -0700)]
sys-file-reader: Improve diagnostics for unexpected special values.
SPSS 21 schanged the value that it reports for "lowest" in the machine
float info record, but the existing diagnostics made it hard to tell
exactly what changed. Adding hexadecimal float output makes it obvious.
Ben Pfaff [Sat, 3 Aug 2013 20:38:03 +0000 (13:38 -0700)]
pspp-dump-sav: Print a new-line following text record content.
Text records don't necessarily end in a new-line so this ensures that the
next line of output starts at the beginning of a line.
Ben Pfaff [Sat, 3 Aug 2013 16:47:39 +0000 (09:47 -0700)]
psppire-var-sheet: Add alignment icons to variable sheet.
Ben Pfaff [Sun, 28 Jul 2013 22:24:39 +0000 (15:24 -0700)]
gui: Remove processor-area from status bar to reduce minimum window width.
Nothing ever puts anything in the processor-area widget, but it forces
the data window to be 35 character widths wider, so by removing it we can
allow the window to be resized much narrower when the status bar is shown.
Reported by Bastián Díaz <diaz.bastian@ymail.com>.
Ben Pfaff [Mon, 29 Jul 2013 04:28:32 +0000 (21:28 -0700)]
psppire-var-sheet: Add measurement level icons to variable sheet.
Suggested by Bastián Díaz <diaz.bastian@ymail.com>.
Ben Pfaff [Sun, 28 Jul 2013 23:47:40 +0000 (16:47 -0700)]
pspp-sheet-view: Draw vertical grid lines at far right of grid.
Ben Pfaff [Sun, 28 Jul 2013 23:43:13 +0000 (16:43 -0700)]
pspp-sheet-view: Fix bug that omitted bottom of cell grid lines.
John Darrington [Sat, 27 Jul 2013 20:04:11 +0000 (22:04 +0200)]
Replaced the splash screen with a new one
John Darrington [Sat, 27 Jul 2013 15:54:06 +0000 (17:54 +0200)]
Replace legacy application icon by new one
John Darrington [Sat, 27 Jul 2013 15:04:38 +0000 (17:04 +0200)]
Make distcheck pass
John Darrington [Fri, 26 Jul 2013 17:34:45 +0000 (19:34 +0200)]
Integrated the application icons
John Darrington [Thu, 25 Jul 2013 20:23:48 +0000 (22:23 +0200)]
Added names of new artwork contributors to about dialog
John Darrington [Thu, 25 Jul 2013 18:50:17 +0000 (20:50 +0200)]
Added mimetype icons
Added some icons to represent pspp file types in file managers etc.
Ben Pfaff [Wed, 24 Jul 2013 05:13:34 +0000 (22:13 -0700)]
Use "auto" mode for parsing syntax in the GUI (and elsewhere).
This should be less surprising, I hope, than always parsing syntax in
"interactive" mode.
Reported by Ronald Crichton <Ronald.Crichton@cit.edu.au>.
John Darrington [Tue, 23 Jul 2013 20:05:18 +0000 (22:05 +0200)]
Change "variable_changed" to "variable-changed" in signal name
This makes it consistent with usage elsewhere.
Ben Pfaff [Wed, 24 Jul 2013 04:17:36 +0000 (21:17 -0700)]
po: Update Dutch translation from translationproject.org.
John Darrington [Tue, 23 Jul 2013 19:47:38 +0000 (21:47 +0200)]
Fix crash when changing variable formats in data import dialog.
Recent changes altered the CHANGE_VARIABLE signal handler signature,
but this handler had not been updated.
Reported-by: dr soumalya ray <drsoumalya-ray@yahoo.co.in>
Ben Pfaff [Tue, 23 Jul 2013 13:58:56 +0000 (06:58 -0700)]
Update version number to 0.8.0.
Ben Pfaff [Tue, 23 Jul 2013 05:06:08 +0000 (22:06 -0700)]
Updated localisations from translation-project.org
John Darrington [Wed, 17 Jul 2013 14:12:07 +0000 (16:12 +0200)]
REGRESSION: Fix issues found by by review
Ben reported following potential problems:
I think that if the DEPENDENT subcommand is given twice (a user error), then
the variables specified the first time will be silently leaked.
cmd_regression() has two local variables named 'i'.
I don't understand why "struct workspace" has a member 'psw' that is a
dynamically allocated array, because it looks like each element of the array
is used only during processing a single split file group. That is, I think
that 'psw' could be just a singleton, instead of an array.
I think that fill_all_vars() is wrong: if an absent var follows a not-absent
var, then vars[] will be filled with a gap and there will be a write into
unallocated memory.
Reported-by: Ben Pfaff
Avoids shadowing variable in lower scope. suggested by Ben Pfaff
Ben Pfaff [Sun, 14 Jul 2013 05:05:09 +0000 (22:05 -0700)]
configure.ac: Increase version number to 0.7.11.
Ben Pfaff [Sat, 13 Jul 2013 15:44:48 +0000 (08:44 -0700)]
ONEWAY: Fix memory leak in run_oneway.
Bug #39070.
Ben Pfaff [Sat, 13 Jul 2013 15:01:46 +0000 (08:01 -0700)]
tower-test: Use memmove(), not memcpy(), for overlapping memory move.
Found by valgrind.
Ben Pfaff [Sat, 13 Jul 2013 03:37:55 +0000 (20:37 -0700)]
sparse-xarray: Fix memory leak in dump_sparse_xarray_to_disk().
Bug #39070.
Ben Pfaff [Sat, 13 Jul 2013 02:47:30 +0000 (19:47 -0700)]
model-checker: Fix memory leak in finish_mc().
This memory leak was visible only when the model checker was configured
with a particular path to follow.
John Darrington [Tue, 9 Jul 2013 06:48:52 +0000 (08:48 +0200)]
constness
John Darrington [Tue, 2 Jul 2013 17:41:16 +0000 (19:41 +0200)]
Fixed incorrect behaviour of REGRESSION when multiple dependent variables are entered
The REGRESSION command behaved badly when more than one dependent variable was entered.
The cause was that the unnormalised covariance matrix returned from the covariance
module was mutated for each variable. Consequently, each variable after the first
was wrong. This change fixes that by changing the ownership semantics of the returned
matrix (and thereby its constness).
This change also adds some comments, attends to constness and fixes the remaining
memory leaks associated with regression.
John Darrington [Mon, 1 Jul 2013 17:02:54 +0000 (19:02 +0200)]
Fix problems associated with LINEAR REGRESSION and splits
John Darrington [Tue, 2 Jul 2013 17:37:08 +0000 (19:37 +0200)]
Added test to check that REGRESSION works with multiple dependent variables
John Darrington [Tue, 2 Jul 2013 17:44:57 +0000 (19:44 +0200)]
Added a test to ensure that SPLITS vs REGRESSION/SAVE works ok
John Darrington [Tue, 2 Jul 2013 17:06:15 +0000 (19:06 +0200)]
Rename tests from REGRESSION to LINEAR REGRESSION
This way I can run just the linear regression tests without the
logistic regression tests.
John Darrington [Sat, 29 Jun 2013 09:20:25 +0000 (11:20 +0200)]
Avoid unexpected failures in check-valgrind due to XTERM_LOCALE
John Darrington [Sat, 29 Jun 2013 05:44:17 +0000 (07:44 +0200)]
Partial fix for regression vs. splits issue
Split the struct regression into information which is
parsed from the command, and data which is calculated during
execution of the command.
Bug #39070
John Darrington [Wed, 26 Jun 2013 16:37:30 +0000 (18:37 +0200)]
linreg.c: Remove superfluous cast
Ben Pfaff [Fri, 28 Jun 2013 07:17:29 +0000 (00:17 -0700)]
range-tower: Fix memory leaks.
Bug #39070.
Ben Pfaff [Fri, 28 Jun 2013 05:30:58 +0000 (22:30 -0700)]
CROSSTABS: Fix memory leaks.
Bug #39070.
John Darrington [Thu, 27 Jun 2013 18:34:54 +0000 (20:34 +0200)]
linreg: Remove some unused features
Ben Pfaff [Thu, 27 Jun 2013 05:56:16 +0000 (22:56 -0700)]
session: Fix two memory leaks.
Bug #39070.
John Darrington [Wed, 26 Jun 2013 07:31:13 +0000 (09:31 +0200)]
LOGISTIC REGRESSION: Fix memory leak in error path
Ben Pfaff [Tue, 25 Jun 2013 06:07:12 +0000 (23:07 -0700)]
datasheet: Avoid reading a given row more than necessary in source_read().
The datasheet casereader uses datasheet_get_row(), which calls rw_case(),
which until this commit called source_read() for every column. The latter
was expensive if casereader_peek() actually copied data for a whole large
row. For a datasheet with N columns, all from a single backing source,
the upshot was that datasheet_get_row() took O(N**2) time.
This commit fixes the problem in the common case by reading as many columns
as possible from a given source in a single call to source_read().
Bug #33260.
John Darrington [Sun, 23 Jun 2013 10:07:56 +0000 (12:07 +0200)]
variable.c: New function var_set_width_and_formats
Added a new function to set the width and formats of a variable as
an atomic operation. This is necessary to allow values to re-interpreted
without going through an intermediate format and thereby perhaps loosing
information.
Closes bug #39252
John Darrington [Sun, 23 Jun 2013 08:49:12 +0000 (10:49 +0200)]
variable.c: (var_set_width) traits other than width may also be set
John Darrington [Sun, 23 Jun 2013 08:33:43 +0000 (10:33 +0200)]
Split VAR_TRAIT_FORMAT into PRINT and WRITE variants
John Darrington [Sat, 22 Jun 2013 10:09:56 +0000 (12:09 +0200)]
Fix and simplify the code for converting variables between types
Before this commit, changing a variable from string to numeric or
vici-versa would cause all values of that variable to become SYSMIS.
This commit fixes this problem at least partially.
Partial fix for bug #39252
John Darrington [Sat, 22 Jun 2013 09:42:02 +0000 (11:42 +0200)]
Fix constness of datasheet_resize_column arguments
The aux variable should not be changed, so make it const
John Darrington [Sat, 22 Jun 2013 07:37:11 +0000 (09:37 +0200)]
dictionary.c: Remove the var_resized and var_display_width_changed callbacks
Remove the resized and display width changed callbacks, and
transfer their actions to the variable_changed callback.
John Darrington [Sat, 22 Jun 2013 06:25:36 +0000 (08:25 +0200)]
Changed the signature of the VARIABLE_CHANGED signal to take the WHAT and OLDVAR parameters
Re-implement signal handlers of the variable-changed signal to PsppireDict to take
the new WHAT and OLDVAR parameters.
John Darrington [Sat, 22 Jun 2013 06:14:12 +0000 (08:14 +0200)]
Added the WHAT and OLDVAR parameters to the var_changed dictionary callback
Propagate the newly implemented WHAT and OLDVAR parameters in the PsppireDict
class.
John Darrington [Sat, 22 Jun 2013 05:33:00 +0000 (07:33 +0200)]
dictionary.c: Added a oldvar parameter to the var_changed callback
The var_changed callback needs a copy of the old (unchanged) variable,
so that implementations can compare and act accordingly.
John Darrington [Sat, 22 Jun 2013 05:23:16 +0000 (07:23 +0200)]
dictionary.c: Added a WHAT argument to dict_var_changed callback
Defined some bitwise constants to indicate which aspect of a variable has
changed. Added an argument to the dict_var_changed callback taking an
argument which contains a combination of these types.
This is used in later commits to avoid the callback implementation having
to guess what exactly changed.
John Darrington [Sat, 22 Jun 2013 04:52:10 +0000 (06:52 +0200)]
variable.c: Add _quiet versions of the var_set_ methods and use in var_clone
var_clone doesn't need to provoke callbacks, since the new variable does not
(yet) have a dictionary hence the callbacks can do nothing. Also the callbacks
cause problems for later commits, since they themselves could call var_clone.
This change therefore defines _quiet versions of all the var_set methods, which
do not generate any callbacks, and uses those versions in the implementation
of var_clone.
John Darrington [Wed, 5 Jun 2013 10:33:11 +0000 (12:33 +0200)]
Minor additions and updates to the meta documentation
John Darrington [Sun, 16 Jun 2013 16:34:24 +0000 (18:34 +0200)]
Remove generation of GSignal marshallers which are no longer required
John Darrington [Sat, 15 Jun 2013 04:44:22 +0000 (06:44 +0200)]
psppire_var_type_dialog: Remove global functions which are not used
Ben Pfaff [Thu, 13 Jun 2013 07:03:51 +0000 (00:03 -0700)]
INPUT PROGRAM: Use a separate dataset for the input program.
Without this change, INPUT PROGRAM uses the same dataset as the following
syntax. This usually is fine, but there's at least one case where it
doesn't work: if the INPUT PROGRAM defines a vector, then a following
proc_execute() without any intervening transformations causes
proc_execute() to follow a "fast path" where it skips running the procedure
but instead just does a few things, like clearing the set of vectors.
Unfortunately, this means that later when the input program is really run,
it doesn't have the vectors and accesses freed memory.
This commit switches to a different tactic. INPUT PROGRAM creates a
special session and dataset that are used only for the input program. This
keeps the dataset and the transformations used for the input program
separate from those used after the input program.
Bug #39097.
Reported by John Darrington.
Ben Pfaff [Wed, 5 Jun 2013 06:25:36 +0000 (23:25 -0700)]
command.def: Disallow DATASET commands inside INPUT PROGRAM, FILE TYPE.
It doesn't make sense to try to switch datasets within INPUT PROGRAM, and
so we shouldn't allow it.
John Darrington [Fri, 7 Jun 2013 04:58:31 +0000 (06:58 +0200)]
Correct typo in documentation of SAVE TRANSLATE
John Darrington [Tue, 28 May 2013 13:52:12 +0000 (15:52 +0200)]
Text Import Dialog: Fix initialisation of pages which had got broken
Ben Pfaff [Tue, 28 May 2013 04:41:36 +0000 (21:41 -0700)]
manual: REGRESSION and DESCRIPTIVES make temp transformations permanent.
Ideally, this should not be the behavior, but it is better than the crash
we had before.
Suggested by John Darrington.
Bug #38787.
Bug #38786.