From: Esme Povirk <esme(a)codeweavers.com> --- dlls/gdiplus/graphicspath.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/dlls/gdiplus/graphicspath.c b/dlls/gdiplus/graphicspath.c index 7b45e08e971..b1e417842f8 100644 --- a/dlls/gdiplus/graphicspath.c +++ b/dlls/gdiplus/graphicspath.c @@ -881,7 +881,6 @@ GpStatus WINGDIPAPI GdipAddPathPie(GpPath *path, REAL x, REAL y, REAL width, REA REAL startAngle, REAL sweepAngle) { GpPointF *ptf; - GpStatus status; INT i, count; TRACE("(%p, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f)\n", @@ -912,28 +911,29 @@ GpStatus WINGDIPAPI GdipAddPathPie(GpPath *path, REAL x, REAL y, REAL width, REA arc2polybezier(ptf, x, y, width, height, startAngle, sweepAngle); - status = GdipAddPathLine(path, x + width/2, y + height/2, ptf[0].X, ptf[0].Y); - if(status != Ok){ - free(ptf); - return status; - } - /* one spline is already added as a line endpoint */ - if(!lengthen_path(path, count - 1)){ + if (!lengthen_path(path, count + 1)) + { free(ptf); return OutOfMemory; } - memcpy(&(path->pathdata.Points[path->pathdata.Count]), &(ptf[1]),sizeof(GpPointF)*(count-1)); + path->pathdata.Points[path->pathdata.Count].X = x + width/2; + path->pathdata.Points[path->pathdata.Count].Y = y + height/2; + path->pathdata.Types[path->pathdata.Count] = PathPointTypeStart; + + memcpy(&(path->pathdata.Points[path->pathdata.Count + 1]), ptf, sizeof(GpPointF)*(count)); + + path->pathdata.Types[path->pathdata.Count + 1] = PathPointTypeLine; for(i = 0; i < count-1; i++) - path->pathdata.Types[path->pathdata.Count+i] = PathPointTypeBezier; + path->pathdata.Types[path->pathdata.Count + 2 + i] = PathPointTypeBezier; - path->pathdata.Count += count-1; + path->pathdata.Count += count + 1; GdipClosePathFigure(path); free(ptf); - return status; + return Ok; } GpStatus WINGDIPAPI GdipAddPathPieI(GpPath *path, INT x, INT y, INT width, INT height, -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/7133