From a8e71e9b2452413398ac10f0b6e2dea41cecdec5 Mon Sep 17 00:00:00 2001 From: ronag Date: Thu, 25 Aug 2011 11:21:38 +0000 Subject: [PATCH] 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 --- core/producer/layer.cpp | 8 ++++---- modules/ffmpeg/producer/ffmpeg_producer.cpp | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) 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. -- 2.39.2