QueryInterface should set *out to NULL on failure, as it seems to do in many different places.
This seems to be a regression from !888. One old game started to crash on startup with this merge request. I bisected it and it pointed to the commit 131ada052a2dbec66df695ce536ca048a2bd9174.
From: Ivan Chikish nekotekina@gmail.com
QueryInterface should set *out to NULL on failure. Also change the log level on failure to FIXME. --- dlls/winegstreamer/wm_reader.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/dlls/winegstreamer/wm_reader.c b/dlls/winegstreamer/wm_reader.c index 18b0e8a90bc..50e2c5fc175 100644 --- a/dlls/winegstreamer/wm_reader.c +++ b/dlls/winegstreamer/wm_reader.c @@ -1700,7 +1700,8 @@ static HRESULT WINAPI unknown_inner_QueryInterface(IUnknown *iface, REFIID iid, *out = &reader->IWMReaderTimecode_iface; else { - WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid)); + FIXME("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid)); + *out = NULL; return E_NOINTERFACE; }
From: Ivan Chikish nekotekina@gmail.com
QueryInterface should set *out to NULL on failure. Also change the log level on failure to FIXME. --- dlls/wmvcore/async_reader.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/dlls/wmvcore/async_reader.c b/dlls/wmvcore/async_reader.c index a51018260b1..47de592c95c 100644 --- a/dlls/wmvcore/async_reader.c +++ b/dlls/wmvcore/async_reader.c @@ -544,7 +544,8 @@ static HRESULT WINAPI WMReader_QueryInterface(IWMReader *iface, REFIID iid, void *out = &reader->IReferenceClock_iface; else { - WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid)); + FIXME("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid)); + *out = NULL; return E_NOINTERFACE; }
Can you please tests for this to dlls/wmvcore/tests/test?