mscoree: Implement ICorDebug SetManagedHandler

Alexandre Julliard julliard at winehq.org
Wed Oct 5 16:58:43 CDT 2011


Alistair Leslie-Hughes <leslie_alistair at 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.

-- 
Alexandre Julliard
julliard at winehq.org



More information about the wine-devel mailing list