ole32: Improve CoRegisterMallocSpy/CoRevokeMallocSpy state and parameter validation.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Nikolay Sivov 2016-03-04 11:24:31 +03:00 committed by Alexandre Julliard
parent 110665a3d8
commit cef4c7dc69
2 changed files with 20 additions and 2 deletions

View File

@ -464,8 +464,9 @@ HRESULT WINAPI CoRegisterMallocSpy(LPMALLOCSPY pMallocSpy)
IMallocSpy* pSpy;
HRESULT hres = E_INVALIDARG;
TRACE("\n");
TRACE("%p\n", pMallocSpy);
if(!pMallocSpy) return E_INVALIDARG;
if(Malloc32.pSpy) return CO_E_OBJISREG;
EnterCriticalSection(&IMalloc32_SpyCS);
@ -504,7 +505,9 @@ HRESULT WINAPI CoRevokeMallocSpy(void)
EnterCriticalSection(&IMalloc32_SpyCS);
if (Malloc32.SpyedAllocationsLeft) {
if (!Malloc32.pSpy)
hres = CO_E_OBJNOTREG;
else if (Malloc32.SpyedAllocationsLeft) {
TRACE("SpyReleasePending with %u allocations left\n", Malloc32.SpyedAllocationsLeft);
Malloc32.SpyReleasePending = TRUE;
hres = E_ACCESSDENIED;

View File

@ -3051,9 +3051,21 @@ static void test_IMallocSpy(void)
IMalloc *imalloc;
HRESULT hr;
hr = CoRegisterMallocSpy(NULL);
ok(hr == E_INVALIDARG, "got 0x%08x\n", hr);
hr = CoRevokeMallocSpy();
ok(hr == CO_E_OBJNOTREG, "got 0x%08x\n", hr);
hr = CoRegisterMallocSpy(&testspy);
ok(hr == S_OK, "got 0x%08x\n", hr);
hr = CoRegisterMallocSpy(NULL);
ok(hr == E_INVALIDARG, "got 0x%08x\n", hr);
hr = CoRegisterMallocSpy(&testspy);
ok(hr == CO_E_OBJISREG, "got 0x%08x\n", hr);
imalloc = NULL;
hr = CoGetMalloc(MEMCTX_TASK, &imalloc);
ok(hr == S_OK, "got 0x%08x\n", hr);
@ -3065,6 +3077,9 @@ static void test_IMallocSpy(void)
hr = CoRevokeMallocSpy();
ok(hr == S_OK, "got 0x%08x\n", hr);
hr = CoRevokeMallocSpy();
ok(hr == CO_E_OBJNOTREG, "got 0x%08x\n", hr);
}
static void init_funcs(void)