summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-06-08 11:47:39 +0100
committerCarl Hetherington <cth@carlh.net>2018-06-08 11:47:39 +0100
commite35d2120a831fe6ccd993a4f86eac084e057e78d (patch)
treebbc8db07d313f2f0d898b691c88e703dc9ae4072
parent82e518498a853af33f2b53ebac08ec3094a96f8e (diff)
Fix crash with missing DCP content.v2.13.27
-rw-r--r--src/lib/dcp_content.cc3
-rw-r--r--src/lib/dcp_decoder.cc10
2 files changed, 12 insertions, 1 deletions
diff --git a/src/lib/dcp_content.cc b/src/lib/dcp_content.cc
index 1dffa6b36..ad1f07718 100644
--- a/src/lib/dcp_content.cc
+++ b/src/lib/dcp_content.cc
@@ -541,6 +541,9 @@ DCPContent::can_reference_audio (string& why_not) const
} catch (dcp::DCPReadError) {
/* We couldn't read the DCP, so it's probably missing */
return false;
+ } catch (DCPError) {
+ /* We couldn't read the DCP, so it's probably missing */
+ return false;
} catch (dcp::KDMDecryptionError) {
/* We have an incorrect KDM */
return false;
diff --git a/src/lib/dcp_decoder.cc b/src/lib/dcp_decoder.cc
index 5f06501b6..2433ad0fb 100644
--- a/src/lib/dcp_decoder.cc
+++ b/src/lib/dcp_decoder.cc
@@ -44,6 +44,8 @@
#include <boost/foreach.hpp>
#include <iostream>
+#include "i18n.h"
+
using std::list;
using std::cout;
using boost::shared_ptr;
@@ -65,8 +67,14 @@ DCPDecoder::DCPDecoder (shared_ptr<const DCPContent> c, shared_ptr<Log> log, boo
subtitle.reset (new SubtitleDecoder (this, c->subtitle, log, ContentTime()));
}
+ list<shared_ptr<dcp::CPL> > cpl_list = cpls ();
+
+ if (cpl_list.empty()) {
+ throw DCPError (_("No CPLs found in DCP."));
+ }
+
shared_ptr<dcp::CPL> cpl;
- BOOST_FOREACH (shared_ptr<dcp::CPL> i, cpls ()) {
+ BOOST_FOREACH (shared_ptr<dcp::CPL> i, cpl_list) {
if (_dcp_content->cpl() && i->id() == _dcp_content->cpl().get()) {
cpl = i;
}