From 86f7e33291cb798b3457fac762c23252608300b7 Mon Sep 17 00:00:00 2001 From: John Ralls Date: Sat, 11 Jul 2020 17:03:54 -0700 Subject: [PATCH] Bug 797827 - 4.0.1 gnucash-cli seg faults on macOS Catalina The string references in Gnucash::run_report's run_report_args were getting corrupted so either a NULL or invalid filename was passed on to the backend. Forcing a copy into run_report_args protects the values and allows the report to run. --- gnucash/gnucash-commands.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/gnucash/gnucash-commands.cpp b/gnucash/gnucash-commands.cpp index 5ee2669d85..7552972cf0 100644 --- a/gnucash/gnucash-commands.cpp +++ b/gnucash/gnucash-commands.cpp @@ -133,11 +133,15 @@ report_session_percentage (const char *message, double percent) return; } +/* Don't try to use std::string& for the members of the following struct, it + * results in the values getting corrupted as it passes through initializing + * Scheme when compiled with Clang. + */ struct run_report_args { - const std::string& file_to_load; - const std::string& run_report; - const std::string& export_type; - const std::string& output_file; + const std::string file_to_load; + const std::string run_report; + const std::string export_type; + const std::string output_file; }; static void