From e853139cf0d2903c9173e6327908c6a57e27e409 Mon Sep 17 00:00:00 2001 From: MacDue Date: Sat, 3 Jun 2023 23:47:31 +0100 Subject: [PATCH] LibGfx: Fix adding active edges in filled path rasterizer This was previously masked by sorting the edges on max_y, but if the last added edge pointed to an edge that ended on the current scanline, that edge (and what it points to) would also end up added to the active edges. These edges would then never get removed, and break things very badly! --- Userland/Libraries/LibGfx/EdgeFlagPathRasterizer.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Userland/Libraries/LibGfx/EdgeFlagPathRasterizer.cpp b/Userland/Libraries/LibGfx/EdgeFlagPathRasterizer.cpp index cb0fd5f2ce..550ca63263 100644 --- a/Userland/Libraries/LibGfx/EdgeFlagPathRasterizer.cpp +++ b/Userland/Libraries/LibGfx/EdgeFlagPathRasterizer.cpp @@ -230,6 +230,9 @@ Detail::Edge* EdgeFlagPathRasterizer::plot_edges_for_scanline(i current_edge = current_edge->next_edge; } + if (prev_edge) + prev_edge->next_edge = nullptr; + m_edge_table[scanline] = nullptr; return active_edges; }