From: Esme Povirk esme@codeweavers.com
--- dlls/gdiplus/region.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/dlls/gdiplus/region.c b/dlls/gdiplus/region.c index 058f659561b..9617f492a51 100644 --- a/dlls/gdiplus/region.c +++ b/dlls/gdiplus/region.c @@ -1108,7 +1108,10 @@ static GpStatus get_region_hrgn(struct region_element *element, GpGraphics *grap case CombineModeXor: case CombineModeExclude: left = CreateRectRgn(-(1 << 22), -(1 << 22), 1 << 22, 1 << 22); break; - case CombineModeUnion: case CombineModeComplement: + case CombineModeComplement: + *hrgn = CreateRectRgn(0, 0, 0, 0); + return *hrgn ? Ok : OutOfMemory; + case CombineModeUnion: *hrgn = NULL; return Ok; } @@ -1133,7 +1136,11 @@ static GpStatus get_region_hrgn(struct region_element *element, GpGraphics *grap case CombineModeXor: case CombineModeComplement: right = CreateRectRgn(-(1 << 22), -(1 << 22), 1 << 22, 1 << 22); break; - case CombineModeUnion: case CombineModeExclude: + case CombineModeExclude: + DeleteObject(left); + *hrgn = CreateRectRgn(0, 0, 0, 0); + return *hrgn ? Ok : OutOfMemory; + case CombineModeUnion: DeleteObject(left); *hrgn = NULL; return Ok;