Alistair Leslie-Hughes <[email protected]> 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. -- Alexandre Julliard [email protected]
