diff --git a/dlls/ole32/ifs.c b/dlls/ole32/ifs.c index f4e7c48c91b..f9a811f7b28 100644 --- a/dlls/ole32/ifs.c +++ b/dlls/ole32/ifs.c @@ -73,10 +73,16 @@ static CRITICAL_SECTION IMalloc32_SpyCS = { &critsect_debug, -1, 0, 0, 0, 0 }; /* resize the old table */ static int SetSpyedBlockTableLength ( int NewLength ) { - if (!Malloc32.SpyedBlocks) Malloc32.SpyedBlocks = (LPVOID*)LocalAlloc(NewLength, GMEM_ZEROINIT); - else Malloc32.SpyedBlocks = (LPVOID*)LocalReAlloc((HLOCAL)Malloc32.SpyedBlocks, NewLength, GMEM_ZEROINIT); - Malloc32.SpyedBlockTableLength = NewLength; - return Malloc32.SpyedBlocks ? 1 : 0; + LPVOID *NewSpyedBlocks; + + if (!Malloc32.SpyedBlocks) NewSpyedBlocks = LocalAlloc(GMEM_ZEROINIT, NewLength); + else NewSpyedBlocks = LocalReAlloc(Malloc32.SpyedBlocks, NewLength, GMEM_ZEROINIT); + if (NewSpyedBlocks) { + Malloc32.SpyedBlocks = NewSpyedBlocks; + Malloc32.SpyedBlockTableLength = NewLength; + } + + return NewSpyedBlocks != NULL; } /* add a location to the table */