Catch exceptions better during hints thread.
authorCarl Hetherington <cth@carlh.net>
Sun, 20 Dec 2020 22:17:16 +0000 (23:17 +0100)
committerCarl Hetherington <cth@carlh.net>
Tue, 22 Dec 2020 01:37:53 +0000 (02:37 +0100)
src/lib/hints.cc

index 13154803579eb5a9379b872471a573c367ca8c1b..ffe6d8e73b131f77600518d38d50de720b46ea90 100644 (file)
@@ -390,7 +390,15 @@ Hints::thread ()
 
        boost::filesystem::path dcp_dir = film->dir("hints") / dcpomatic::get_process_id();
        boost::filesystem::remove_all (dcp_dir);
-       _writer->finish (film->dir("hints") / dcpomatic::get_process_id());
+
+       try {
+               _writer->finish (film->dir("hints") / dcpomatic::get_process_id());
+       } catch (...) {
+               store_current ();
+               emit (bind(boost::ref(Finished)));
+               return;
+       }
+
        dcp::DCP dcp (dcp_dir);
        dcp.read ();
        DCPOMATIC_ASSERT (dcp.cpls().size() == 1);