Nikolay Sivov (@nsivov) commented about dlls/d2d1/device.c:
static HRESULT STDMETHODCALLTYPE d2d_device_GetDxgiDevice(ID2D1Device6 *iface, IDXGIDevice **dxgi_device) {
- FIXME("iface %p, dxgi_device %p stub!\n", iface, dxgi_device);
- struct d2d_device *device = impl_from_ID2D1Device(iface);
- return E_NOTIMPL;
- TRACE("iface %p, dxgi_device %p.\n", iface, dxgi_device);
- if (!device->allow_get_dxgi_device)
return D2DERR_INVALID_CALL;
Please add some tests to see if out argument is reset to null or not on this error path. It does happen sometimes in d3d api, and it's easy to imagine pattern like "GetDxgiDevice(&device); if (device) {};".