https://git.reactos.org/?p=reactos.git;a=commitdiff;h=bea7848fa9016a5db4cb23f1159d769a3d3c7391
commit bea7848fa9016a5db4cb23f1159d769a3d3c7391 Author: William Kent <wjk...@gmail.com> AuthorDate: Mon Aug 28 15:56:02 2023 -0400 Commit: GitHub <nore...@github.com> CommitDate: Mon Aug 28 21:56:02 2023 +0200 [SHELL32] Add two missing GlobalUnlock() calls (#5625) * [SHELL32] Release DROPFILES structures * [SHELL32] Release the STGMEDIUM when returning on error --- dll/win32/shell32/droptargets/CRecyclerDropTarget.cpp | 2 ++ dll/win32/shell32/droptargets/CexeDropHandler.cpp | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/dll/win32/shell32/droptargets/CRecyclerDropTarget.cpp b/dll/win32/shell32/droptargets/CRecyclerDropTarget.cpp index a29ec1e1c88..32f1f5f617a 100644 --- a/dll/win32/shell32/droptargets/CRecyclerDropTarget.cpp +++ b/dll/win32/shell32/droptargets/CRecyclerDropTarget.cpp @@ -46,6 +46,7 @@ class CRecyclerDropTarget : if (!lpdf) { ERR("Error locking global\n"); + ReleaseStgMedium(&medium); return E_FAIL; } @@ -65,6 +66,7 @@ class CRecyclerDropTarget : hr = E_FAIL; } + GlobalUnlock(medium.hGlobal); ReleaseStgMedium(&medium); return hr; diff --git a/dll/win32/shell32/droptargets/CexeDropHandler.cpp b/dll/win32/shell32/droptargets/CexeDropHandler.cpp index 2b8a915ff5a..1316385211a 100644 --- a/dll/win32/shell32/droptargets/CexeDropHandler.cpp +++ b/dll/win32/shell32/droptargets/CexeDropHandler.cpp @@ -72,6 +72,7 @@ HRESULT WINAPI CExeDropHandler::Drop(IDataObject *pDataObject, DWORD dwKeyState, if (!lpdf) { ERR("Error locking global\n"); + ReleaseStgMedium(&medium); return E_FAIL; } pszSrcList = (LPWSTR) (((byte*) lpdf) + lpdf->pFiles); @@ -84,6 +85,9 @@ HRESULT WINAPI CExeDropHandler::Drop(IDataObject *pDataObject, DWORD dwKeyState, pszSrcList += wcslen(pszSrcList) + 1; } + + GlobalUnlock(medium.hGlobal); + ReleaseStgMedium(&medium); } ShellExecuteW(NULL, L"open", sPathTarget, wszBuf, NULL,SW_SHOWNORMAL); @@ -138,4 +142,4 @@ HRESULT WINAPI CExeDropHandler::GetClassID(CLSID * lpClassId) *lpClassId = *pclsid; return S_OK; -} \ No newline at end of file +}