Instead of setlocale(LC_ALL, NULL). The uses for the string either create
an ICU locale or sort between German and US TXF reports. On some OSes
where the user has different locales set for one or more categories LC_ALL
produces a dump of all of the LC_FOO variables and their values. That's
not useful for comparing to de_DE and it's too long for ICU, which
crashes.
Meanwhile in dialog-print-checks the RV of setlocale was ignored,
rendering the call a no-op.
The first-line cause of the bug was that the safe save was failing on
SQLite3 because the backup tables weren't visible inside the
transaction and that prevented them from being dropped. Commit the
transaction before trying to drop the backup tables.
https://bugs.gnucash.org/show_bug.cgi?id=799623 identified a problem
with int64_t storage in SQLite3 by setting a date after 2038-01-23
whose time64 overflowed int32_t. But dates shouldn't be stored as
time64s, they should be stored as ISO 8601 date-time strings. So fix
the test to store the date correctly and to store the big int as an
int64_t.
instead of strcmp. strcmp does a byte-by-byte numerical
comparison, not an alphabetical one (e.g. A > e).
Also fix the transposed args in the strstr call in
gnc_unicode_has_substring_identical.
zeros when entering stocks.
Preserve the decimal point when printing numbers with no decimal
places to stop the auto-decimal code from triggering when exiting the
field.
And as a side benefit don't leak signal handlers for the repGncFreq
changed signal.
The crash occured because gnc_frequency_setup_recurrence first calls
gnc_date_edit_set_gdate which emits a changed signal that, if it
wasn't the first call to loan_rep_prep would call
update_repayment_formula_cb and that would generate a new recurrences
list. But the still running gnc_frequency_setup_recurrence still had a
pointer to the old list and when it tried to manipulate it it would
crash.
This change disconnects the previous signal handler preventing the
list from being replaced.
Boost Process 1.88 defaults to the new V2 API introduced in Boost
1.81. https://repology.org/project/boost/versions shows that distro
support for boost 1.81 and later is spotty at best so we won't be able
to migrate to v2 until that improves.