From 9f87bbd020645eb0fc5b45abe49bc0088e9a32f7 Mon Sep 17 00:00:00 2001 From: Jonathan Moore Liles Date: Thu, 11 Mar 2010 00:03:45 -0600 Subject: [PATCH] Timeline: Fix 64-bit bug in interactive region trimming. --- timeline/src/Sequence_Region.C | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/timeline/src/Sequence_Region.C b/timeline/src/Sequence_Region.C index 58786c1..354bf06 100644 --- a/timeline/src/Sequence_Region.C +++ b/timeline/src/Sequence_Region.C @@ -20,6 +20,8 @@ #include "Sequence_Region.H" #include "Track.H" +#include + Sequence_Region::Sequence_Region ( ) @@ -68,13 +70,14 @@ Sequence_Region::set ( Log_Entry &e ) void Sequence_Region::trim_left ( nframes_t where ) { - long td = where - _r->start; + int64_t td = (int64_t)where - _r->start; + /* beyond the beginning */ if ( td < 0 && _r->offset < (nframes_t)( 0 - td ) ) - td = 0 - _r->offset; + td = (int64_t)0 - _r->offset; if ( td > 0 && (nframes_t)td >= _r->length ) - td = _r->length - timeline->x_to_ts( 1 ); + td = (int64_t)_r->length - timeline->x_to_ts( 1 ); _r->trim_left( 0 - td ); @@ -89,7 +92,7 @@ Sequence_Region::trim_left ( nframes_t where ) void Sequence_Region::trim_right ( nframes_t where ) { - long td = ( _r->start + _r->length ) - where; + int64_t td = (int64_t)( _r->start + _r->length ) - where; if ( td >= 0 && _r->length < (nframes_t)td ) td = _r->length - timeline->x_to_ts( 1 );