Rob Shearman : gdi32: Fix memory leaks on EMF_Create_HENHMETAFILE failure.
Alexandre Julliard
julliard at winehq.org
Mon Dec 14 09:51:26 CST 2009
Module: wine
Branch: master
Commit: eb81fa283b5efbf15dd9360bf1a95ac809374b80
URL: http://source.winehq.org/git/wine.git/?a=commit;h=eb81fa283b5efbf15dd9360bf1a95ac809374b80
Author: Rob Shearman <robertshearman at gmail.com>
Date: Mon Dec 14 14:12:58 2009 +0000
gdi32: Fix memory leaks on EMF_Create_HENHMETAFILE failure.
---
dlls/gdi32/enhmetafile.c | 10 +++++++++-
1 files changed, 9 insertions(+), 1 deletions(-)
diff --git a/dlls/gdi32/enhmetafile.c b/dlls/gdi32/enhmetafile.c
index 95e5589..adb19a0 100644
--- a/dlls/gdi32/enhmetafile.c
+++ b/dlls/gdi32/enhmetafile.c
@@ -466,8 +466,12 @@ UINT WINAPI GetEnhMetaFileDescriptionW(
HENHMETAFILE WINAPI SetEnhMetaFileBits(UINT bufsize, const BYTE *buf)
{
ENHMETAHEADER *emh = HeapAlloc( GetProcessHeap(), 0, bufsize );
+ HENHMETAFILE hmf;
memmove(emh, buf, bufsize);
- return EMF_Create_HENHMETAFILE( emh, FALSE );
+ hmf = EMF_Create_HENHMETAFILE( emh, FALSE );
+ if (!hmf)
+ HeapFree( GetProcessHeap(), 0, emh );
+ return hmf;
}
/*****************************************************************************
@@ -2509,6 +2513,8 @@ HENHMETAFILE WINAPI CopyEnhMetaFileA(
emrDst = HeapAlloc( GetProcessHeap(), 0, emrSrc->nBytes );
memcpy( emrDst, emrSrc, emrSrc->nBytes );
hmfDst = EMF_Create_HENHMETAFILE( emrDst, FALSE );
+ if (!hmfDst)
+ HeapFree( GetProcessHeap(), 0, emrDst );
} else {
HANDLE hFile;
DWORD w;
@@ -2549,6 +2555,8 @@ HENHMETAFILE WINAPI CopyEnhMetaFileW(
emrDst = HeapAlloc( GetProcessHeap(), 0, emrSrc->nBytes );
memcpy( emrDst, emrSrc, emrSrc->nBytes );
hmfDst = EMF_Create_HENHMETAFILE( emrDst, FALSE );
+ if (!hmfDst)
+ HeapFree( GetProcessHeap(), 0, emrDst );
} else {
HANDLE hFile;
DWORD w;
More information about the wine-cvs
mailing list