From f7b50fd54b249c294e686fc09d8bb33d2a992d42 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 6 Oct 2014 20:37:40 +0100 Subject: [PATCH] Fix heinous bug with conversion to libdcp::Time causing missing subtitles (and probably other problems). --- src/dcp_time.cc | 4 ++-- test/dcp_time_test.cc | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/dcp_time.cc b/src/dcp_time.cc index d597e3dc..4c16a91a 100644 --- a/src/dcp_time.cc +++ b/src/dcp_time.cc @@ -59,12 +59,12 @@ Time::set (double ss) t = (int (round (ss * 1000)) % 1000) / 4; s = floor (ss); - if (s > 60) { + if (s >= 60) { m = s / 60; s -= m * 60; } - if (m > 60) { + if (m >= 60) { h = m / 60; m -= h * 60; } diff --git a/test/dcp_time_test.cc b/test/dcp_time_test.cc index 6892711e..a8256998 100644 --- a/test/dcp_time_test.cc +++ b/test/dcp_time_test.cc @@ -59,4 +59,16 @@ BOOST_AUTO_TEST_CASE (dcp_time) BOOST_CHECK_EQUAL (libdcp::Time (4128391203LL).to_ticks(), 4128391203LL); BOOST_CHECK_EQUAL (libdcp::Time (60000).to_ticks(), 60000); + + a = libdcp::Time (3600 * 24, 24); + BOOST_CHECK_EQUAL (a.h, 1); + BOOST_CHECK_EQUAL (a.m, 0); + BOOST_CHECK_EQUAL (a.s, 0); + BOOST_CHECK_EQUAL (a.t, 0); + + a = libdcp::Time (60 * 24, 24); + BOOST_CHECK_EQUAL (a.h, 0); + BOOST_CHECK_EQUAL (a.m, 1); + BOOST_CHECK_EQUAL (a.s, 0); + BOOST_CHECK_EQUAL (a.t, 0); } -- 2.30.2