From: Carl Hetherington Date: Sun, 9 May 2021 20:07:51 +0000 (+0200) Subject: Remove erroneous call to optional_node_child(). X-Git-Tag: v2.15.145~3 X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=b50a098f422cdb671a67ccb41e2837aa505e405b Remove erroneous call to optional_node_child(). Just after this we loop over all nodes, and optional_node_child will raise an exception if there is more than one. --- diff --git a/src/lib/text_content.cc b/src/lib/text_content.cc index 4ba2de348..5ae8dd45e 100644 --- a/src/lib/text_content.cc +++ b/src/lib/text_content.cc @@ -104,10 +104,6 @@ TextContent::from_xml (Content* parent, cxml::ConstNodePtr node, int version) return { make_shared(parent, node, version) }; } - if (!node->optional_node_child("Text")) { - return {}; - } - list> c; for (auto i: node->node_children("Text")) { c.push_back (make_shared(parent, i, version)); diff --git a/test/film_metadata_test.cc b/test/film_metadata_test.cc index 5fcb4b195..92c06210a 100644 --- a/test/film_metadata_test.cc +++ b/test/film_metadata_test.cc @@ -18,6 +18,7 @@ */ + /** @file test/film_metadata_test.cc * @brief Test some basic reading/writing of film metadata. * @ingroup feature @@ -76,3 +77,27 @@ BOOST_AUTO_TEST_CASE (film_metadata_test) g->write_metadata (); check_xml ("test/data/metadata.xml.ref", dir.string() + "/metadata.xml", ignore); } + + +/** Check a bug where tags with multiple s would fail to load */ +BOOST_AUTO_TEST_CASE (multiple_text_nodes_are_allowed) +{ + auto subs = content_factory("test/data/15s.srt").front(); + auto caps = content_factory("test/data/15s.srt").front(); + auto film = new_test_film2("multiple_text_nodes_are_allowed1", { subs, caps }); + caps->only_text()->set_type(TextType::CLOSED_CAPTION); + make_and_verify_dcp ( + film, + { + dcp::VerificationNote::Code::MISSING_CPL_METADATA, + dcp::VerificationNote::Code::MISSING_SUBTITLE_LANGUAGE, + dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME + }); + + auto reload = make_shared(film->dir(film->dcp_name())); + auto film2 = new_test_film2("multiple_text_nodes_are_allowed2", { reload }); + film2->write_metadata (); + + auto test = make_shared(boost::filesystem::path("build/test/multiple_text_nodes_are_allowed2")); + test->read_metadata(); +}