summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/subrip_reader.cc8
-rw-r--r--test/subrip_reader_test.cc9
2 files changed, 14 insertions, 3 deletions
diff --git a/src/subrip_reader.cc b/src/subrip_reader.cc
index 73af9ee..0e948f9 100644
--- a/src/subrip_reader.cc
+++ b/src/subrip_reader.cc
@@ -298,9 +298,11 @@ SubripReader::convert_line (string t, RawSubtitle& p)
}
} else if (has_next(t, i, "</font>")) {
maybe_content (p);
- SUB_ASSERT (!colours.empty());
- colours.pop_back ();
- p.colour = colours.back ();
+ /* Maybe there were no colours, or this is an extra unmatched </font> */
+ if (!colours.empty()) {
+ colours.pop_back();
+ p.colour = colours.back();
+ }
} else if (has_next(t, i, "{\\")) {
string ssa = "\\";
while (i < t.size() && t[i] != '}') {
diff --git a/test/subrip_reader_test.cc b/test/subrip_reader_test.cc
index 319bbb1..afd2579 100644
--- a/test/subrip_reader_test.cc
+++ b/test/subrip_reader_test.cc
@@ -737,3 +737,12 @@ BOOST_AUTO_TEST_CASE(subrip_returns_to_bottom_middle)
BOOST_CHECK(subs[3].lines[0].horizontal_position.reference == sub::HorizontalReference::HORIZONTAL_CENTRE_OF_SCREEN);
}
+
+BOOST_AUTO_TEST_CASE(subrip_tolerates_extra_font_closing_tags)
+{
+ auto f = fopen(boost::filesystem::path(private_test / "LetniSkola.srt").c_str(), "r");
+ BOOST_REQUIRE(f);
+ sub::SubripReader reader(f);
+ fclose(f);
+}
+