File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -69,7 +69,9 @@ class OPENTIME_API_TYPE RationalTime
6969 // / @brief Returns the time value converted to a new rate.
7070 constexpr double value_rescaled_to (double new_rate) const noexcept
7171 {
72- return new_rate == _rate ? _value : (_value * new_rate) / _rate;
72+ return new_rate == _rate
73+ ? _value
74+ : (_rate > 0 ? (_value * new_rate) / _rate : 0 );
7375 }
7476
7577 // / @brief Returns the time value converted to a new rate.
Original file line number Diff line number Diff line change @@ -32,6 +32,18 @@ main(int argc, char** argv)
3232 assertFalse (t2.is_invalid_time ());
3333 });
3434
35+ tests.add_test (" test_rescale" , [] {
36+ RationalTime t1 (1.0 , 1.0 );
37+ RationalTime t2 = t1.rescaled_to (24 );
38+ assertEqual (t2.value (), 24 );
39+ assertEqual (t2.rate (), 24 );
40+
41+ // Try rescaling an invalid time:
42+ t2 = RationalTime (1.0 , 0.0 ).rescaled_to (24 );
43+ assertEqual (t2.value (), 0 );
44+ assertEqual (t2.rate (), 24 );
45+ });
46+
3547 tests.add_test (" test_equality" , [] {
3648 RationalTime t1 (30.2 );
3749 assertEqual (t1, t1);
You can’t perform that action at this time.
0 commit comments