Rémi Bernon (@rbernon) commented about dlls/windows.devices.enumeration/main.c:
case DeviceWatcherStatus_Aborted: case DeviceWatcherStatus_Created: case DeviceWatcherStatus_Stopped: + { + IWeakReferenceSource *weak_src; + IWeakReference *weak; + HRESULT hr; + + hr = IDeviceWatcher_QueryInterface( iface, &IID_IWeakReferenceSource, (void **)&weak_src ); + if (FAILED(hr)) break; + hr = IWeakReferenceSource_GetWeakReference( weak_src, &weak ); + IWeakReferenceSource_Release( weak_src ); + if (FAILED(hr)) break; + hr = DevCreateObjectQuery( DevObjectTypeDeviceInterfaceDisplay, DevQueryFlagAsyncClose, 0, NULL, 0, NULL, device_object_query_callback, weak, + &impl->query ); + if (FAILED(hr))
There's no need to go through `QueryInterface`. Also `GetWeakReference` cannot fail. ```suggestion:-5+0 IWeakReferenceSource_GetWeakReference( &impl->weak_reference_source.IWeakReferenceSource_iface, &weak ); ``` -- https://gitlab.winehq.org/wine/wine/-/merge_requests/8555#note_111632