summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2023-12-22 19:37:12 +0100
committerCarl Hetherington <cth@carlh.net>2023-12-22 19:37:17 +0100
commitf06acc5d2b9fa65639788fb011c3ada104400083 (patch)
tree155fd62e8a5dbe45367264887171473d24cdcb2f
parent42ff0632f46a8b1918f16035baa67972eb221282 (diff)
Make SSA reader more tolerant of missing styles (DoM #2685).v1.6.45
-rw-r--r--src/ssa_reader.cc12
-rw-r--r--test/ssa_reader_test.cc1
2 files changed, 11 insertions, 2 deletions
diff --git a/src/ssa_reader.cc b/src/ssa_reader.cc
index dad0f26..416d317 100644
--- a/src/ssa_reader.cc
+++ b/src/ssa_reader.cc
@@ -488,8 +488,16 @@ SSAReader::read (function<optional<string> ()> get_line)
"they seem to mean literally nothing". Go figure...
*/
trim_left_if (event[i], boost::is_any_of ("*"));
- SUB_ASSERT (styles.find(event[i]) != styles.end());
- style = styles[event[i]];
+ /* Use the specified style unless it's not defined, in which case use
+ * "Default" (if it exists).
+ */
+ if (styles.find(event[i]) != styles.end()) {
+ style = styles[event[i]];
+ } else if (styles.find("Default") != styles.end()) {
+ style = styles["Default"];
+ } else {
+ continue;
+ }
sub.font = style->font_name;
sub.font_size = FontSize::from_proportional(static_cast<float>(style->font_size) / play_res_y);
sub.colour = style->primary_colour;
diff --git a/test/ssa_reader_test.cc b/test/ssa_reader_test.cc
index 3413e96..71eb03a 100644
--- a/test/ssa_reader_test.cc
+++ b/test/ssa_reader_test.cc
@@ -173,6 +173,7 @@ BOOST_AUTO_TEST_CASE (ssa_reader_test2)
test ("dcpsubtest-en.ssa");
test ("dcpsubtest-en.ssa");
test ("W_GERMAN_SUBS_grey.ass");
+ test ("XxxHolic (2022) ITA 071223.ass");
}
#define SUB_START(f, t) \