Alexandre Julliard : winex11: Correctly free CF_DIB format, and don' t free unknown GDI formats.
Alexandre Julliard
julliard at winehq.org
Thu Aug 18 10:23:25 CDT 2016
Module: wine
Branch: master
Commit: 228d855907e8b26b186413a4175c185405cb2e8d
URL: http://source.winehq.org/git/wine.git/?a=commit;h=228d855907e8b26b186413a4175c185405cb2e8d
Author: Alexandre Julliard <julliard at winehq.org>
Date: Thu Aug 18 18:24:28 2016 +0900
winex11: Correctly free CF_DIB format, and don't free unknown GDI formats.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/winex11.drv/clipboard.c | 44 ++++++++++++++++++--------------------------
1 file changed, 18 insertions(+), 26 deletions(-)
diff --git a/dlls/winex11.drv/clipboard.c b/dlls/winex11.drv/clipboard.c
index 9b6c749..460440d 100644
--- a/dlls/winex11.drv/clipboard.c
+++ b/dlls/winex11.drv/clipboard.c
@@ -577,38 +577,30 @@ static void X11DRV_CLIPBOARD_FreeData(LPWINE_CLIPDATA lpData)
{
TRACE("%04x\n", lpData->wFormatID);
- if ((lpData->wFormatID >= CF_GDIOBJFIRST &&
- lpData->wFormatID <= CF_GDIOBJLAST) ||
- lpData->wFormatID == CF_BITMAP ||
- lpData->wFormatID == CF_DIB ||
- lpData->wFormatID == CF_PALETTE)
- {
- if (lpData->hData)
- DeleteObject(lpData->hData);
+ if (!lpData->hData) return;
- if ((lpData->wFormatID == CF_DIB) && lpData->drvData)
- XFreePixmap(gdi_display, lpData->drvData);
- }
- else if (lpData->wFormatID == CF_METAFILEPICT)
+ switch (lpData->wFormatID)
{
- if (lpData->hData)
- {
+ case CF_BITMAP:
+ case CF_PALETTE:
+ DeleteObject(lpData->hData);
+ break;
+ case CF_DIB:
+ if (lpData->drvData) XFreePixmap(gdi_display, lpData->drvData);
+ GlobalFree(lpData->hData);
+ break;
+ case CF_METAFILEPICT:
DeleteMetaFile(((METAFILEPICT *)GlobalLock( lpData->hData ))->hMF );
GlobalFree(lpData->hData);
- }
- }
- else if (lpData->wFormatID == CF_ENHMETAFILE)
- {
- if (lpData->hData)
- DeleteEnhMetaFile(lpData->hData);
- }
- else if (lpData->wFormatID < CF_PRIVATEFIRST ||
- lpData->wFormatID > CF_PRIVATELAST)
- {
- if (lpData->hData)
+ break;
+ case CF_ENHMETAFILE:
+ DeleteEnhMetaFile(lpData->hData);
+ break;
+ default:
+ if (lpData->wFormatID >= CF_PRIVATEFIRST && lpData->wFormatID <= CF_PRIVATELAST) break;
GlobalFree(lpData->hData);
+ break;
}
-
lpData->hData = 0;
lpData->drvData = 0;
}
More information about the wine-cvs
mailing list