From a3ff7b579831e7d187e592c053f5f89b7be879ae Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Thu, 31 Dec 2009 16:15:37 -0600 Subject: [PATCH] gdiplus: Fix a memory leak in GdipCreateMetafileFromWmf. --- dlls/gdiplus/graphics.c | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-) diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index 563e43a..a4f1158 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -1217,7 +1217,7 @@ GpStatus WINGDIPAPI GdipCreateMetafileFromWmf(HMETAFILE hwmf, BOOL delete, UINT read; BYTE* copy; HENHMETAFILE hemf; - GpStatus retval = GenericError; + GpStatus retval = Ok; TRACE("(%p, %d, %p, %p)\n", hwmf, delete, placeable, metafile); @@ -1242,6 +1242,7 @@ GpStatus WINGDIPAPI GdipCreateMetafileFromWmf(HMETAFILE hwmf, BOOL delete, if(CreateStreamOnHGlobal(copy, TRUE, &stream) != S_OK){ ERR("could not make stream\n"); GdipFree(copy); + retval = GenericError; goto err; } @@ -1253,7 +1254,10 @@ GpStatus WINGDIPAPI GdipCreateMetafileFromWmf(HMETAFILE hwmf, BOOL delete, if(OleLoadPicture(stream, 0, FALSE, &IID_IPicture, (LPVOID*) &((*metafile)->image.picture)) != S_OK) + { + retval = GenericError; goto err; + } (*metafile)->image.type = ImageTypeMetafile; @@ -1277,10 +1281,9 @@ GpStatus WINGDIPAPI GdipCreateMetafileFromWmf(HMETAFILE hwmf, BOOL delete, TRACE("<-- %p\n", *metafile); - return Ok; - err: - GdipFree(*metafile); + if (retval != Ok) + GdipFree(*metafile); IStream_Release(stream); return retval; } -- 1.6.3.3