summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2024-06-27 20:14:31 +0200
committerCarl Hetherington <cth@carlh.net>2024-06-27 20:14:31 +0200
commitd6e8b54b2b60f70f1a8837183bc184809977be67 (patch)
treefe267959d19bca6480e71701fbd642502319352c
parent7e1e6564c680c426b9ec207c82d5ea2b9f4630ea (diff)
Fix error when importing bad subtitle file (#2838).
The subtitle XML refers to a font with no corresponding <LoadFont>.
-rw-r--r--src/lib/font_id_allocator.cc4
m---------test/data0
-rw-r--r--test/subtitle_font_id_test.cc14
3 files changed, 17 insertions, 1 deletions
diff --git a/src/lib/font_id_allocator.cc b/src/lib/font_id_allocator.cc
index 112dd262b..5e4ae9c0f 100644
--- a/src/lib/font_id_allocator.cc
+++ b/src/lib/font_id_allocator.cc
@@ -116,7 +116,9 @@ string
FontIDAllocator::font_id(int reel_index, string asset_id, string font_id) const
{
auto iter = _map.find(Font(reel_index, asset_id, font_id));
- DCPOMATIC_ASSERT(iter != _map.end());
+ if (iter == _map.end()) {
+ return default_font_id();
+ }
return String::compose("%1_%2", iter->second, font_id);
}
diff --git a/test/data b/test/data
-Subproject 4cb08962ba07e99c442cb12091c0347d84d8fd8
+Subproject 6a4fa8b7c13e4f09fcee995191a2c86e1eff9d6
diff --git a/test/subtitle_font_id_test.cc b/test/subtitle_font_id_test.cc
index bc09a9cf1..12d804d20 100644
--- a/test/subtitle_font_id_test.cc
+++ b/test/subtitle_font_id_test.cc
@@ -302,3 +302,17 @@ BOOST_AUTO_TEST_CASE(no_error_with_ccap_that_mentions_no_font)
while (!player.pass()) {}
}
+
+BOOST_AUTO_TEST_CASE(cope_with_unloaded_font_id)
+{
+ /* This file has a <Font> with an ID that corresponds to no <LoadFont> */
+ auto subs = content_factory("test/data/unloaded_font.xml")[0];
+ auto film = new_test_film2("cope_with_unloaded_font_id", { subs });
+ make_and_verify_dcp(
+ film,
+ {
+ dcp::VerificationNote::Code::MISSING_SUBTITLE_LANGUAGE,
+ dcp::VerificationNote::Code::MISSING_CPL_METADATA,
+ });
+}
+