From: "Stefan Brüns" Subject: [PATCH] d2d: Suppress last empty segment also for D2D1_FIGURE_END_OPEN Message-Id: <20211230221854.18968-1-stefan.bruens@rwth-aachen.de> Date: Thu, 30 Dec 2021 23:18:54 +0100 When the last vertex is coincident with the first vertex, the last segment should be suppressed for both END_OPEN and END_CLOSED. When the last, zero length segment is not omitted d2d_geometry_intersect_self will add invalid segments. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51139 Signed-off-by: Stefan Brüns --- dlls/d2d1/geometry.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dlls/d2d1/geometry.c b/dlls/d2d1/geometry.c index a7074899fda..95aaf199ad2 100644 --- a/dlls/d2d1/geometry.c +++ b/dlls/d2d1/geometry.c @@ -2917,8 +2917,9 @@ static void STDMETHODCALLTYPE d2d_geometry_sink_EndFigure(ID2D1GeometrySink *ifa { ++geometry->u.path.segment_count; figure->flags |= D2D_FIGURE_FLAG_CLOSED; - if (!memcmp(&figure->vertices[0], &figure->vertices[figure->vertex_count - 1], sizeof(*figure->vertices))) - --figure->vertex_count; + } + if (!memcmp(&figure->vertices[0], &figure->vertices[figure->vertex_count - 1], sizeof(*figure->vertices))) { + --figure->vertex_count; } if (!d2d_geometry_add_figure_outline(geometry, figure, figure_end)) -- 2.34.1