Fix potential infinite loop in TempoCurve::set_position()
authornick_m <mainsbridge@gmail.com>
Sun, 10 Jul 2016 17:53:36 +0000 (03:53 +1000)
committernick_m <mainsbridge@gmail.com>
Sun, 10 Jul 2016 17:53:36 +0000 (03:53 +1000)
- it was previously possible for frame_step to be zero for tempo sections with
  a short duration, resulting in endlessly adding 0 to current_frame.

gtk2_ardour/tempo_curve.cc

index bc83bfaa42c0076930e066e3bb72670a5fb2dcbf..47712052630d6543eecdf1ead8b5d612e1d7f357 100644 (file)
@@ -128,7 +128,7 @@ TempoCurve::set_position (framepos_t frame, framepos_t end_frame)
                points->push_back (ArdourCanvas::Duple (ArdourCanvas::COORD_MAX - 5.0, y_pos));
 
        } else {
-               const framepos_t frame_step = (end_frame - frame) / 5;
+               const framepos_t frame_step = max ((end_frame - frame) / 5, (framepos_t) 1);
                framepos_t current_frame = frame;
 
                while (current_frame < (end_frame - frame_step)) {