OSDN Git Service

Cppcheck: Race condition: non-interlocked access after InterlockedDecrement(). Use...
authorTakashi Sawanaka <sdottaka@users.sourceforge.net>
Sat, 28 May 2016 11:48:19 +0000 (20:48 +0900)
committerTakashi Sawanaka <sdottaka@users.sourceforge.net>
Sat, 28 May 2016 11:48:19 +0000 (20:48 +0900)
Src/DropHandler.cpp

index 93aeb73..de29e6c 100644 (file)
@@ -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)