From b19f3d383c9ad869f9ea6a76fb93f3880beffbde Mon Sep 17 00:00:00 2001 From: John Ralls Date: Wed, 8 Apr 2020 12:20:06 -0700 Subject: [PATCH] Protect some exceptions from being passed to Swig. --- libgnucash/app-utils/gnc-optiondb.cpp | 15 +++++++++++---- libgnucash/app-utils/gnc-optiondb.i | 13 +++++++++++-- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/libgnucash/app-utils/gnc-optiondb.cpp b/libgnucash/app-utils/gnc-optiondb.cpp index 452b7bca79..70a8dc0612 100644 --- a/libgnucash/app-utils/gnc-optiondb.cpp +++ b/libgnucash/app-utils/gnc-optiondb.cpp @@ -888,10 +888,17 @@ gnc_register_number_range_option(GncOptionDB* db, const char* section, const char* doc_string, ValueType value, ValueType min, ValueType max, ValueType step) { - GncOption option{GncOptionRangeValue{section, name, key, - doc_string, value, min, - max, step}}; - db->register_option(section, std::move(option)); + try + { + GncOption option{GncOptionRangeValue{section, name, key, + doc_string, value, min, + max, step}}; + db->register_option(section, std::move(option)); + } + catch(const std::invalid_argument& err) + { + std::cerr <<"Number Range Option " << err.what() << ", option not registerd.\n"; + } } void diff --git a/libgnucash/app-utils/gnc-optiondb.i b/libgnucash/app-utils/gnc-optiondb.i index 06bac06d4f..a698fb5745 100644 --- a/libgnucash/app-utils/gnc-optiondb.i +++ b/libgnucash/app-utils/gnc-optiondb.i @@ -425,10 +425,19 @@ wrap_unique_ptr(GncOptionDBPtr, GncOptionDB); auto db_opt = optiondb->find_option(section, name); if (!db_opt) { -// PWARN("Attempt to write non-existent option %s/%s", section, name); + std::cerr <<"Attempt to write non-existent option " << section + << "/" << name; return; } - GncOption_set_value_from_scm(db_opt, new_value); + try + { + GncOption_set_value_from_scm(db_opt, new_value); + } + catch(const std::invalid_argument& err) + { + std::cerr << "Failed to set option " << section << "/" << name + << ": " << err.what() << "\n"; + } } GncOptionDBPtr