From: ronag Date: Thu, 25 Aug 2011 11:21:38 +0000 (+0000) Subject: 2.0. layer: Fixed potential arethmetic overflows. X-Git-Tag: 2.0.1~61 X-Git-Url: https://git.sesse.net/?p=casparcg;a=commitdiff_plain;h=a8e71e9b2452413398ac10f0b6e2dea41cecdec5 2.0. layer: Fixed potential arethmetic overflows. git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.0.0.2@1283 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d --- diff --git a/core/producer/layer.cpp b/core/producer/layer.cpp index 7ef42e9fe..f940d2a9e 100644 --- a/core/producer/layer.cpp +++ b/core/producer/layer.cpp @@ -40,7 +40,7 @@ public: : foreground_(frame_producer::empty()) , background_(frame_producer::empty()) , frame_number_(0) - , auto_play_delta_(std::numeric_limits::min()) + , auto_play_delta_(-1) , is_paused_(false) { } @@ -77,7 +77,7 @@ public: foreground_ = background_; background_ = frame_producer::empty(); frame_number_ = 0; - auto_play_delta_ = std::numeric_limits::min(); + auto_play_delta_ = -1; } is_paused_ = false; @@ -88,7 +88,7 @@ public: foreground_ = frame_producer::empty(); background_ = background_; frame_number_ = 0; - auto_play_delta_ = std::numeric_limits::min(); + auto_play_delta_ = -1; is_paused_ = true; } @@ -105,7 +105,7 @@ public: return foreground_->last_frame(); auto frames_left = foreground_->nb_frames() - (++frame_number_) - auto_play_delta_; - if(frames_left < 1) + if(auto_play_delta_ > -1 && frames_left < 1) { play(); return receive(); diff --git a/modules/ffmpeg/producer/ffmpeg_producer.cpp b/modules/ffmpeg/producer/ffmpeg_producer.cpp index 839e35a1d..3db902f5f 100644 --- a/modules/ffmpeg/producer/ffmpeg_producer.cpp +++ b/modules/ffmpeg/producer/ffmpeg_producer.cpp @@ -172,7 +172,7 @@ public: virtual int64_t nb_frames() const { if(loop_) - return std::numeric_limits::max(); + return std::numeric_limits::max(); // This function estimates nb_frames until input has read all packets for one loop, at which point the count should be accurate.