From cb7db104dd287f0212c00abbe5733c5e7e5bb5a2 Mon Sep 17 00:00:00 2001 From: Mike Hearn Date: Tue, 22 Jul 2003 01:01:06 +0000 Subject: [PATCH] IMallocSpy cannot cause an allocation failure when cb == 0. --- dlls/ole32/ifs.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/dlls/ole32/ifs.c b/dlls/ole32/ifs.c index 4c13a498597..15dfe3a3fdd 100644 --- a/dlls/ole32/ifs.c +++ b/dlls/ole32/ifs.c @@ -144,16 +144,18 @@ static LPVOID WINAPI IMalloc_fnAlloc(LPMALLOC iface, DWORD cb) { TRACE("(%ld)\n",cb); if(Malloc32.pSpy) { + DWORD preAllocResult; + EnterCriticalSection(&IMalloc32_SpyCS); - cb = IMallocSpy_PreAlloc(Malloc32.pSpy, cb); - if (0==cb) { - /* PreAlloc can force Alloc to fail */ - LeaveCriticalSection(&IMalloc32_SpyCS); + preAllocResult = IMallocSpy_PreAlloc(Malloc32.pSpy, cb); + if ((cb != 0) && (preAllocResult == 0)) { + /* PreAlloc can force Alloc to fail, but not if cb == 0 */ + TRACE("returning null\n"); + LeaveCriticalSection(&IMalloc32_SpyCS); return NULL; } } - - + addr = HeapAlloc(GetProcessHeap(),0,cb); if(Malloc32.pSpy) {