Rémi Bernon (@rbernon) commented about dlls/cryptowinrt/async.c:
return ref; }
-static HRESULT WINAPI async_impl_put_Completed( IWineAsyncInfoImpl *iface, IWineAsyncOperationCompletedHandler *handler ) +static HRESULT WINAPI async_completed_Invoke( IAsyncActionCompletedHandler *iface, IAsyncAction *info, + AsyncStatus status ) { - struct async_info *impl = impl_from_IWineAsyncInfoImpl( iface ); - HRESULT hr = S_OK; + struct async_completed *impl = impl_from_IAsyncActionCompletedHandler( iface ); + IAsyncActionCompletedHandler *handler = (IAsyncActionCompletedHandler *)impl->inner_handler; + IAsyncAction *action = (IAsyncAction *)impl->inner_action;
- TRACE( "iface %p, handler %p.\n", iface, handler ); + return IAsyncActionCompletedHandler_Invoke( handler, action, status );
This may work but it is IMO incorrect and I don't think we should do that. `IAsyncOperationCompletedHandler<T>` is not derived from `IAsyncActionCompletedHandler`, and `IAsyncOperation<T>` is not derived from `IAsyncAction`. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/6889#note_88591