From 1077ba0a4d614da9f5afb7c254fdf58addff219c Mon Sep 17 00:00:00 2001 From: delta2force Date: Thu, 19 Sep 2024 16:52:53 +0200 Subject: [PATCH] fix: limit bisection method iterations --- kitty/animation.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kitty/animation.c b/kitty/animation.c index dbfbd82cd..4904d9ff0 100644 --- a/kitty/animation.c +++ b/kitty/animation.c @@ -135,12 +135,14 @@ solve_curve_x(const BezierParameters *p, double x, double epsilon) { if (fabs(x2) < epsilon) return t2; // Fall back to the bisection method for reliability. - while (t0 < t1) { + size_t iteration = 0; + while (t0 < t1 && iteration < 5) { x2 = sample_curve_x(p, t2); if (fabs(x2 - x) < epsilon) return t2; if (x > x2) t0 = t2; else t1 = t2; t2 = (t1 + t0) * .5; + ++iteration; } // Failure.