From: Carl Hetherington Date: Mon, 29 Nov 2021 23:00:17 +0000 (+0100) Subject: Be a little more careful to handle exceptions from boost::filesystem::file_size X-Git-Tag: v2.15.179~10 X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=01e979c79f7d0aa20fac1bb24c699e0636168294 Be a little more careful to handle exceptions from boost::filesystem::file_size There has been a report of file_size throwing an exception and crashing DCP-o-matic, but I haven't been able to reproduce it yet (possibly related to there being missing content files). --- diff --git a/src/lib/file_log.cc b/src/lib/file_log.cc index 5cc9c5569..4d6a0e6ea 100644 --- a/src/lib/file_log.cc +++ b/src/lib/file_log.cc @@ -69,7 +69,11 @@ FileLog::head_and_tail (int amount) const uintmax_t head_amount = amount; uintmax_t tail_amount = amount; - uintmax_t size = boost::filesystem::file_size (_file); + boost::system::error_code ec; + uintmax_t size = boost::filesystem::file_size (_file, ec); + if (size == static_cast(-1)) { + return ""; + } if (size < (head_amount + tail_amount)) { head_amount = size; diff --git a/src/wx/config_dialog.cc b/src/wx/config_dialog.cc index 53c67d101..e0effec53 100644 --- a/src/wx/config_dialog.cc +++ b/src/wx/config_dialog.cc @@ -633,7 +633,7 @@ CertificateChainEditor::import_private_key () chain->set_key (dcp::file_to_string (p)); _set (chain); update_private_key (); - } catch (dcp::MiscError& e) { + } catch (std::exception& e) { error_dialog (this, _("Could not read certificate file."), std_to_wx(e.what())); } }