]> git.sesse.net Git - casparcg/blobdiff - core/producer/layer.cpp
2.0. layer: Fixed potential arethmetic overflows.
[casparcg] / core / producer / layer.cpp
index 7ef42e9fe9875fa6cdf08b4bc1a799e3c84d1bee..f940d2a9eb6bda491fa0253bc9b376dcbc47fa50 100644 (file)
@@ -40,7 +40,7 @@ public:
                : foreground_(frame_producer::empty())\r
                , background_(frame_producer::empty())\r
                , frame_number_(0)\r
-               , auto_play_delta_(std::numeric_limits<int>::min())\r
+               , auto_play_delta_(-1)\r
                , is_paused_(false)\r
        {\r
        }\r
@@ -77,7 +77,7 @@ public:
                        foreground_                     = background_;\r
                        background_                     = frame_producer::empty();\r
                        frame_number_           = 0;\r
-                       auto_play_delta_        = std::numeric_limits<int>::min();      \r
+                       auto_play_delta_        = -1;   \r
                }\r
 \r
                is_paused_                      = false;\r
@@ -88,7 +88,7 @@ public:
                foreground_                     = frame_producer::empty();\r
                background_                     = background_;\r
                frame_number_           = 0;\r
-               auto_play_delta_        = std::numeric_limits<int>::min();\r
+               auto_play_delta_        = -1;\r
 \r
                is_paused_                      = true;\r
        }\r
@@ -105,7 +105,7 @@ public:
                                return foreground_->last_frame();\r
 \r
                        auto frames_left = foreground_->nb_frames() - (++frame_number_) - auto_play_delta_;\r
-                       if(frames_left < 1)\r
+                       if(auto_play_delta_ > -1 && frames_left < 1)\r
                        {\r
                                play();\r
                                return receive();\r