From bbf60c26adc2e9986847433d223c9d24e3805a99 Mon Sep 17 00:00:00 2001 From: Takashi Sawanaka Date: Sat, 28 May 2016 20:48:19 +0900 Subject: [PATCH] Cppcheck: Race condition: non-interlocked access after InterlockedDecrement(). Use InterlockedDecrement() return value instead. --- Src/DropHandler.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Src/DropHandler.cpp b/Src/DropHandler.cpp index 93aeb7381..de29e6c67 100644 --- a/Src/DropHandler.cpp +++ b/Src/DropHandler.cpp @@ -307,11 +307,12 @@ ULONG STDMETHODCALLTYPE DropHandler::AddRef(void) ULONG STDMETHODCALLTYPE DropHandler::Release(void) { - if (InterlockedDecrement(&m_cRef) == 0) { + ULONG cRef = InterlockedDecrement(&m_cRef); + if (cRef == 0) { delete this; return 0; } - return m_cRef; + return cRef; } HRESULT STDMETHODCALLTYPE DropHandler::DragEnter(IDataObject* pDataObj, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect) -- 2.11.0