From 79f957a6f37276f71cf98d4fa1ae5e0ab3beb76d Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 5 Mar 2023 11:48:46 +0100 Subject: [PATCH] Catch exceptions from some calls to write_metadata(). --- src/tools/dcpomatic.cc | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc index 1923a12a3..d40976094 100644 --- a/src/tools/dcpomatic.cc +++ b/src/tools/dcpomatic.cc @@ -614,14 +614,22 @@ private: void file_save () { - _film->write_metadata (); + try { + _film->write_metadata (); + } catch (exception& e) { + error_dialog(this, _("Could not save project."), std_to_wx(e.what())); + } } void file_save_as_template () { SaveTemplateDialog dialog(this); if (dialog.ShowModal() == wxID_OK) { - Config::instance()->save_template(_film, dialog.name()); + try { + Config::instance()->save_template(_film, dialog.name()); + } catch (exception& e) { + error_dialog(this, _("Could not save template."), std_to_wx(e.what())); + } } } @@ -633,7 +641,11 @@ private: auto film = make_shared(dialog.path()); film->copy_from (_film); film->set_name(dialog.path().filename().generic_string()); - film->write_metadata (); + try { + film->write_metadata(); + } catch (exception& e) { + error_dialog(this, _("Could not duplicate project."), std_to_wx(e.what())); + } } } @@ -645,8 +657,12 @@ private: auto film = make_shared(dialog.path()); film->copy_from (_film); film->set_name(dialog.path().filename().generic_string()); - film->write_metadata (); - set_film (film); + try { + film->write_metadata (); + set_film (film); + } catch (exception& e) { + error_dialog(this, _("Could not duplicate project."), std_to_wx(e.what())); + } } } -- 2.30.2