Fix heinous bug with conversion to libdcp::Time causing missing subtitles (and probab...
authorCarl Hetherington <cth@carlh.net>
Mon, 6 Oct 2014 19:37:40 +0000 (20:37 +0100)
committerCarl Hetherington <cth@carlh.net>
Mon, 6 Oct 2014 19:37:40 +0000 (20:37 +0100)
src/dcp_time.cc
test/dcp_time_test.cc

index d597e3dc203e765e10e2d20ec9331a7e0de637f1..4c16a91afd73a17fa4cf51f29abecc9e1fc2c7d6 100644 (file)
@@ -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;
        }
index 6892711eefb2a3623b1450f4ccafba121fd2ce75..a82569988299fa82eb7340a02123bffbc84d3cb9 100644 (file)
@@ -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);
 }