Skip to content

Commit 7689cf7

Browse files
committed
Check for negative duration
Signed-off-by: Darby Johnston <[email protected]>
1 parent 235d812 commit 7689cf7

File tree

3 files changed

+8
-2
lines changed

3 files changed

+8
-2
lines changed

src/opentime/timeRange.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class TimeRange
6161
/// duration is invalid.
6262
bool is_invalid_range() const noexcept
6363
{
64-
return _start_time.is_invalid_time() || _duration.is_invalid_time();
64+
return _start_time.is_invalid_time() || _duration.is_invalid_time() || _duration.value() < 0.0;
6565
}
6666

6767
/// @brief Returns true if the time range is valid.
@@ -70,7 +70,7 @@ class TimeRange
7070
/// duration are valid.
7171
bool is_valid_range() const noexcept
7272
{
73-
return _start_time.is_valid_time() && _duration.is_valid_time();
73+
return _start_time.is_valid_time() && _duration.is_valid_time() && _duration.value() >= 0.0;
7474
}
7575

7676
constexpr RationalTime start_time() const noexcept { return _start_time; }

tests/test_opentime.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,9 @@ main(int argc, char** argv)
162162
otime::TimeRange r2(0.0, 24.0, 24.0);
163163
assertTrue(r2.is_valid_range());
164164
assertFalse(r2.is_invalid_range());
165+
otime::TimeRange r3(0.0, -24.0, 24.0);
166+
assertFalse(r3.is_valid_range());
167+
assertTrue(r3.is_invalid_range());
165168
});
166169

167170
tests.run(argc, argv);

tests/test_opentime.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -889,6 +889,9 @@ def test_valid(self):
889889
tr2 = otio.opentime.TimeRange(0, 48, 24)
890890
self.assertTrue(tr2.is_valid_range())
891891
self.assertFalse(tr2.is_invalid_range())
892+
tr3 = otio.opentime.TimeRange(0, -48, 24)
893+
self.assertFalse(tr3.is_valid_range())
894+
self.assertTrue(tr3.is_invalid_range())
892895

893896
def test_duration_validation(self):
894897
tr = otio.opentime.TimeRange()

0 commit comments

Comments
 (0)