Alistair Leslie-Hughes leslie_alistair@hotmail.com writes:
@@ -99,8 +99,28 @@ static HRESULT WINAPI CorDebug_Terminate(ICorDebug *iface) static HRESULT WINAPI CorDebug_SetManagedHandler(ICorDebug *iface, ICorDebugManagedCallback *pCallback) { RuntimeHost *This = impl_from_ICorDebug( iface );
- FIXME("stub %p %p\n", This, pCallback);
- return E_NOTIMPL;
- HRESULT hr;
- TRACE("%p (%p)\n", This, pCallback);
- if(!pCallback)
return E_INVALIDARG;
- if(This->pCallback2)
ICorDebugManagedCallback2_Release(This->pCallback2);
- if(This->pCallback)
ICorDebugManagedCallback_Release(This->pCallback);
- hr = ICorDebugManagedCallback_QueryInterface(pCallback, &IID_ICorDebugManagedCallback2, (void**)&This->pCallback2);
- if(hr == S_OK)
- {
This->pCallback = pCallback;
ICorDebugManagedCallback_AddRef(This->pCallback);
- }
You can't release the old interfaces before the new ones are in place.