diff options
| -rw-r--r-- | src/subrip_reader.cc | 8 | ||||
| -rw-r--r-- | test/subrip_reader_test.cc | 9 |
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); +} + |
