[PATCH] ole32: fixed critical section lock logic (Coverity)

Marcus Meissner meissner at suse.de
Tue Mar 15 03:16:28 CDT 2011


Hi,

On pending Malloc Spy removal we would not leave the
criticalsection.

The whitespace damage was there before, I did not touch it :/

Ciao, Marcus
---
 dlls/ole32/ifs.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/dlls/ole32/ifs.c b/dlls/ole32/ifs.c
index a4857d4..6d197f5 100644
--- a/dlls/ole32/ifs.c
+++ b/dlls/ole32/ifs.c
@@ -201,6 +201,7 @@ static LPVOID WINAPI IMalloc_fnAlloc(LPMALLOC iface, DWORD cb) {
 static LPVOID WINAPI IMalloc_fnRealloc(LPMALLOC iface,LPVOID pv,DWORD cb) {
 
 	LPVOID pNewMemory;
+	BOOL locked = FALSE;
 
 	TRACE("(%p,%d)\n",pv,cb);
 
@@ -209,6 +210,7 @@ static LPVOID WINAPI IMalloc_fnRealloc(LPMALLOC iface,LPVOID pv,DWORD cb) {
 	    BOOL fSpyed;
 
 	    EnterCriticalSection(&IMalloc32_SpyCS);
+	    locked = TRUE;
             fSpyed = RemoveMemoryLocation(pv);
             cb = IMallocSpy_PreRealloc(Malloc32.pSpy, pv, cb, &pRealMemory, fSpyed);
 
@@ -237,8 +239,8 @@ static LPVOID WINAPI IMalloc_fnRealloc(LPMALLOC iface,LPVOID pv,DWORD cb) {
 	if(Malloc32.pSpy) {
 	    pNewMemory = IMallocSpy_PostRealloc(Malloc32.pSpy, pNewMemory, TRUE);
 	    if (pNewMemory) AddMemoryLocation(pNewMemory);
-            LeaveCriticalSection(&IMalloc32_SpyCS);
 	}
+        if (locked) LeaveCriticalSection(&IMalloc32_SpyCS);
 
 	TRACE("--(%p)\n",pNewMemory);
 	return pNewMemory;
-- 
1.7.1



More information about the wine-patches mailing list