gdiplus: Fix cleanup after errors in GdipCloneImage.
Vincent Povirk
madewokherd+8cd9 at gmail.com
Sun Dec 6 20:12:57 CST 2009
--
Vincent Povirk
-------------- next part --------------
From f559e81f891f77822589d981c575b7a8e7d0d7c8 Mon Sep 17 00:00:00 2001
From: Vincent Povirk <vincent at codeweavers.com>
Date: Sun, 6 Dec 2009 20:07:40 -0600
Subject: [PATCH 2/2] gdiplus: Fix cleanup after errors in GdipCloneImage.
The Dispose/Unlock calls do not match the original Create/Lock calls.
---
dlls/gdiplus/image.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/dlls/gdiplus/image.c b/dlls/gdiplus/image.c
index 22895c7..73a6bd6 100644
--- a/dlls/gdiplus/image.c
+++ b/dlls/gdiplus/image.c
@@ -746,12 +746,14 @@ GpStatus WINGDIPAPI GdipCloneImage(GpImage *image, GpImage **cloneImage)
GdipBitmapUnlockBits((GpBitmap*)*cloneImage, &lockeddata_dst);
}
- GdipBitmapUnlockBits(bitmap, &lockeddata_src);
+ if (stat != Ok)
+ GdipDisposeImage(*cloneImage);
}
+ GdipBitmapUnlockBits(bitmap, &lockeddata_src);
+
if (stat != Ok)
{
- GdipDisposeImage(*cloneImage);
*cloneImage = NULL;
}
else memcpy(&(*cloneImage)->format, &image->format, sizeof(GUID));
--
1.6.3.3
More information about the wine-patches
mailing list