소스 검색

LibWeb: Avoid NaNs from zero-length gradient color stops

MacDue 2 년 전
부모
커밋
ffdcc60b03
1개의 변경된 파일5개의 추가작업 그리고 1개의 파일을 삭제
  1. 5 1
      Userland/Libraries/LibWeb/Painting/GradientPainting.cpp

+ 5 - 1
Userland/Libraries/LibWeb/Painting/GradientPainting.cpp

@@ -177,7 +177,11 @@ void paint_linear_gradient(PaintContext& context, Gfx::IntRect const& gradient_r
         // For any given point between the two color stops,
         // determine the point’s location as a percentage of the distance between the two color stops.
         // Let this percentage be P.
-        auto p = (position - previous_stop.position) / (next_stop.position - previous_stop.position);
+        auto stop_length = next_stop.position - previous_stop.position;
+        // FIXME: Avoids NaNs... Still not quite correct?
+        if (stop_length <= 0)
+            return 1;
+        auto p = (position - previous_stop.position) / stop_length;
         if (!next_stop.transition_hint.has_value())
             return p;
         if (*next_stop.transition_hint >= 1)