From 88b52579c0bb391fe0db225b7a608ad3ffd61831 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 19 Apr 2018 22:47:37 +0100 Subject: [PATCH] Add unit test to trigger #1275 and an assert to prevent the segfault. --- src/lib/writer.cc | 2 ++ test/subtitle_trim_test.cc | 41 ++++++++++++++++++++++++++++++++++++++ test/wscript | 1 + 3 files changed, 44 insertions(+) create mode 100644 test/subtitle_trim_test.cc diff --git a/src/lib/writer.cc b/src/lib/writer.cc index d6c3370b0..d86a2ccf4 100644 --- a/src/lib/writer.cc +++ b/src/lib/writer.cc @@ -664,6 +664,8 @@ Writer::write (PlayerSubtitles subs, DCPTimePeriod period) ++_subtitle_reel; } + DCPOMATIC_ASSERT (_subtitle_reel != _reels.end()); + _subtitle_reel->write (subs); } diff --git a/test/subtitle_trim_test.cc b/test/subtitle_trim_test.cc new file mode 100644 index 000000000..33bcf823f --- /dev/null +++ b/test/subtitle_trim_test.cc @@ -0,0 +1,41 @@ +/* + Copyright (C) 2018 Carl Hetherington + + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + DCP-o-matic is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with DCP-o-matic. If not, see . + +*/ + +#include "lib/film.h" +#include "lib/dcp_subtitle_content.h" +#include "test.h" +#include + +using boost::shared_ptr; + +/** Check for no crash when trimming DCP subtitles (#1275) */ +BOOST_AUTO_TEST_CASE (subtitle_trim_test1) +{ + shared_ptr film = new_test_film2 ("subtitle_trim_test1"); + shared_ptr content (new DCPSubtitleContent (film, "test/data/dcp_sub5.xml")); + film->examine_and_add_content (content); + BOOST_REQUIRE (!wait_for_jobs ()); + + content->set_trim_end (ContentTime::from_seconds (2)); + film->write_metadata (); + + film->make_dcp (); + BOOST_REQUIRE (!wait_for_jobs ()); +} diff --git a/test/wscript b/test/wscript index fef16dbed..c50826ae9 100644 --- a/test/wscript +++ b/test/wscript @@ -99,6 +99,7 @@ def build(bld): ssa_subtitle_test.cc stream_test.cc subtitle_reel_number_test.cc + subtitle_trim_test.cc test.cc threed_test.cc time_calculation_test.cc -- 2.30.2