From 34a0463bca0b8eace9bd193cca05bdd98fd34afe Mon Sep 17 00:00:00 2001 From: Joris Huizer Date: Mon, 14 Mar 2005 10:46:50 +0000 Subject: [PATCH] A few memory checks avoiding memory leaks. --- dlls/ole32/clipboard.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/dlls/ole32/clipboard.c b/dlls/ole32/clipboard.c index 5c74d3d4b1..b1c562d301 100644 --- a/dlls/ole32/clipboard.c +++ b/dlls/ole32/clipboard.c @@ -938,12 +938,15 @@ static HRESULT OLEClipbrd_RenderFormat(IDataObject *pIDataObject, LPFORMATETC pF std.tymed = pFormatetc->tymed = TYMED_ISTORAGE; hStorage = GlobalAlloc(GMEM_SHARE|GMEM_MOVEABLE, 0); + if (hStorage == NULL) + HANDLE_ERROR( E_OUTOFMEMORY ); hr = CreateILockBytesOnHGlobal(hStorage, FALSE, &ptrILockBytes); hr = StgCreateDocfileOnILockBytes(ptrILockBytes, STGM_SHARE_EXCLUSIVE|STGM_READWRITE, 0, &std.u.pstg); if (FAILED(hr = IDataObject_GetDataHere(theOleClipboard->pIDataObjectSrc, pFormatetc, &std))) { WARN("() : IDataObject_GetDataHere failed to render clipboard data! (%lx)\n", hr); + GlobalFree(hStorage); return hr; } @@ -1023,10 +1026,11 @@ static HRESULT OLEClipbrd_RenderFormat(IDataObject *pIDataObject, LPFORMATETC pF else { if (FAILED(hr = IDataObject_GetData(pIDataObject, pFormatetc, &std))) - { - WARN("() : IDataObject_GetData failed to render clipboard data! (%lx)\n", hr); - return hr; - } + { + WARN("() : IDataObject_GetData failed to render clipboard data! (%lx)\n", hr); + GlobalFree(hStorage); + return hr; + } /* To put a copy back on the clipboard */ @@ -1079,7 +1083,10 @@ static HGLOBAL OLEClipbrd_GlobalDupMem( HGLOBAL hGlobalSrc ) pGlobalSrc = GlobalLock(hGlobalSrc); pGlobalDest = GlobalLock(hGlobalDest); if ( !pGlobalSrc || !pGlobalDest ) + { + GlobalFree(hGlobalDest); return 0; + } memcpy(pGlobalDest, pGlobalSrc, cBytes); -- 2.33.8