Pārlūkot izejas kodu

LibGfx/Path: Round numerator in elliptical_arc_to

This avoids rounding problems which made Ladybird crash with some SVGs
on macOS/Clang.
Nicolas Ramz 1 gadu atpakaļ
vecāks
revīzija
b3cbe0fdb9
1 mainītis faili ar 1 papildinājumiem un 1 dzēšanām
  1. 1 1
      Userland/Libraries/LibGfx/Path.cpp

+ 1 - 1
Userland/Libraries/LibGfx/Path.cpp

@@ -127,7 +127,7 @@ void Path::elliptical_arc_to(FloatPoint point, FloatSize radii, float x_axis_rot
     } else {
     } else {
         double numerator = rx_sq * ry_sq - rx_sq * y1p_sq - ry_sq * x1p_sq;
         double numerator = rx_sq * ry_sq - rx_sq * y1p_sq - ry_sq * x1p_sq;
         double denominator = rx_sq * y1p_sq + ry_sq * x1p_sq;
         double denominator = rx_sq * y1p_sq + ry_sq * x1p_sq;
-        multiplier = AK::sqrt(numerator / denominator);
+        multiplier = AK::sqrt(AK::max(0., numerator) / denominator);
     }
     }
 
 
     if (large_arc == sweep)
     if (large_arc == sweep)