From: Akihiro Sagawa <sagawa.aki(a)gmail.com> --- dlls/gdiplus/metafile.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/dlls/gdiplus/metafile.c b/dlls/gdiplus/metafile.c index 49c41b37965..c70aa333428 100644 --- a/dlls/gdiplus/metafile.c +++ b/dlls/gdiplus/metafile.c @@ -5162,9 +5162,9 @@ GpStatus METAFILE_FillPath(GpMetafile *metafile, GpBrush *brush, GpPath *path) GpStatus METAFILE_FillEllipse(GpMetafile *metafile, GpBrush *brush, GpRectF *rect) { + BOOL is_int_rect, inline_color; EmfPlusFillEllipse *record; DWORD brush_id = -1; - BOOL inline_color; GpStatus stat; if (metafile->metafile_type == MetafileTypeEmf) @@ -5180,7 +5180,11 @@ GpStatus METAFILE_FillEllipse(GpMetafile *metafile, GpBrush *brush, GpRectF *rec if (stat != Ok) return stat; } - stat = METAFILE_AllocateRecord(metafile, EmfPlusRecordTypeFillEllipse, sizeof(EmfPlusFillEllipse), (void **)&record); + is_int_rect = is_integer_rect(rect); + + stat = METAFILE_AllocateRecord(metafile, EmfPlusRecordTypeFillEllipse, + FIELD_OFFSET(EmfPlusFillEllipse, RectData) + (is_int_rect ? sizeof(EmfPlusRect) : sizeof(EmfPlusRectF)), + (void **)&record); if (stat != Ok) return stat; if (inline_color) { @@ -5190,7 +5194,7 @@ GpStatus METAFILE_FillEllipse(GpMetafile *metafile, GpBrush *brush, GpRectF *rec else record->BrushId = brush_id; - if (is_integer_rect(rect)) + if (is_int_rect) { record->Header.Flags |= 0x4000; record->RectData.rect.X = (SHORT)rect->X; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/6324