Bug 799148 - Reliable crash when saving a modified saved report...

configuration.

The user's saved configurations included some based on a bad
report-id, so handle the hash table returning #f by skipping that configuration.

There's an odd side-effect: The Save Configuration As action doesn't
prepare the dialog to edit the saved configuration name, the user must
find the new configuration and rename it. It works correctly if there
are no discarded configurations.
This commit is contained in:
Christopher Lam 2023-12-16 12:02:21 -08:00 committed by John Ralls
parent 1da2464577
commit 9d15e70ce2

View File

@ -645,11 +645,14 @@ not found.")))
(define (gnc:report-template-serialize report-template)
(let* ((name (gnc:report-template-name report-template))
(type (gnc:report-template-parent-type report-template))
(templ-name (gnc:report-template-name
(hash-ref *gnc:_report-templates_* type)))
(options (gnc:report-template-new-options report-template))
(guid (gnc:report-template-report-guid report-template)))
(gnc:report-template-serialize-internal name type templ-name options guid)))
(tmpl (hash-ref *gnc:_report-templates_* type)))
(cond
((not tmpl) (gnc:warn "gnc:report-template-serialize: cannot find template for " type) #f)
(else
(let ((templ-name (gnc:report-template-name tmpl))
(options (gnc:report-template-new-options report-template))
(guid (gnc:report-template-report-guid report-template)))
(gnc:report-template-serialize-internal name type templ-name options guid))))))
;; Convert a report into a report template and save this template in the savefile
;; Under specific conditions the we will attempt to replace the current report's
@ -712,7 +715,7 @@ not found.")))
(define (gnc:report-template-save-to-savefile report-template)
(let ((saved-form (gnc:report-template-serialize report-template)))
(gnc-saved-reports-write-to-file saved-form #f)))
(and saved-form (gnc-saved-reports-write-to-file saved-form #f))))
;; save all custom reports, moving the old version of the
;; saved-reports file aside as a backup