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.
-- v2: wmvcore/tests: check out value in check_interface
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; }
From: Ivan Chikish nekotekina@gmail.com
--- dlls/wmvcore/tests/wmvcore.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/dlls/wmvcore/tests/wmvcore.c b/dlls/wmvcore/tests/wmvcore.c index ae6071159f6..8c2f53855d9 100644 --- a/dlls/wmvcore/tests/wmvcore.c +++ b/dlls/wmvcore/tests/wmvcore.c @@ -134,7 +134,7 @@ static WCHAR *load_resource(const WCHAR *name) static HRESULT check_interface_(unsigned int line, void *iface, REFIID riid, BOOL supported) { HRESULT hr, expected_hr; - IUnknown *unknown = iface, *out; + IUnknown *unknown = iface, *out = (IUnknown *)0xbeef;
expected_hr = supported ? S_OK : E_NOINTERFACE;
@@ -142,6 +142,8 @@ static HRESULT check_interface_(unsigned int line, void *iface, REFIID riid, BOO ok_(__FILE__, line)(hr == expected_hr, "Got hr %#lx, expected %#lx.\n", hr, expected_hr); if (SUCCEEDED(hr)) IUnknown_Release(out); + else + ok_(__FILE__, line)(out == NULL, "Expected out == NULL\n"); return hr; }
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=129207
Your paranoid android.
=== debian11 (32 bit report) ===
wmvcore: wmvcore.c:169: Test succeeded inside todo block: Expected out == NULL wmvcore.c:170: Test succeeded inside todo block: Expected out == NULL wmvcore.c:171: Test succeeded inside todo block: Expected out == NULL wmvcore.c:172: Test succeeded inside todo block: Expected out == NULL
=== debian11 (32 bit ar:MA report) ===
wmvcore: wmvcore.c:169: Test succeeded inside todo block: Expected out == NULL wmvcore.c:170: Test succeeded inside todo block: Expected out == NULL wmvcore.c:171: Test succeeded inside todo block: Expected out == NULL wmvcore.c:172: Test succeeded inside todo block: Expected out == NULL
=== debian11 (32 bit de report) ===
wmvcore: wmvcore.c:169: Test succeeded inside todo block: Expected out == NULL wmvcore.c:170: Test succeeded inside todo block: Expected out == NULL wmvcore.c:171: Test succeeded inside todo block: Expected out == NULL wmvcore.c:172: Test succeeded inside todo block: Expected out == NULL
=== debian11 (32 bit fr report) ===
wmvcore: wmvcore.c:169: Test succeeded inside todo block: Expected out == NULL wmvcore.c:170: Test succeeded inside todo block: Expected out == NULL wmvcore.c:171: Test succeeded inside todo block: Expected out == NULL wmvcore.c:172: Test succeeded inside todo block: Expected out == NULL
=== debian11 (32 bit he:IL report) ===
wmvcore: wmvcore.c:169: Test succeeded inside todo block: Expected out == NULL wmvcore.c:170: Test succeeded inside todo block: Expected out == NULL wmvcore.c:171: Test succeeded inside todo block: Expected out == NULL wmvcore.c:172: Test succeeded inside todo block: Expected out == NULL
=== debian11 (32 bit hi:IN report) ===
wmvcore: wmvcore.c:169: Test succeeded inside todo block: Expected out == NULL wmvcore.c:170: Test succeeded inside todo block: Expected out == NULL wmvcore.c:171: Test succeeded inside todo block: Expected out == NULL wmvcore.c:172: Test succeeded inside todo block: Expected out == NULL
=== debian11 (32 bit ja:JP report) ===
wmvcore: wmvcore.c:169: Test succeeded inside todo block: Expected out == NULL wmvcore.c:170: Test succeeded inside todo block: Expected out == NULL wmvcore.c:171: Test succeeded inside todo block: Expected out == NULL wmvcore.c:172: Test succeeded inside todo block: Expected out == NULL
=== debian11 (32 bit zh:CN report) ===
wmvcore: wmvcore.c:169: Test succeeded inside todo block: Expected out == NULL wmvcore.c:170: Test succeeded inside todo block: Expected out == NULL wmvcore.c:171: Test succeeded inside todo block: Expected out == NULL wmvcore.c:172: Test succeeded inside todo block: Expected out == NULL
=== debian11b (32 bit WoW report) ===
wmvcore: wmvcore.c:169: Test succeeded inside todo block: Expected out == NULL wmvcore.c:170: Test succeeded inside todo block: Expected out == NULL wmvcore.c:171: Test succeeded inside todo block: Expected out == NULL wmvcore.c:172: Test succeeded inside todo block: Expected out == NULL
=== debian11b (64 bit WoW report) ===
wmvcore: wmvcore.c:169: Test succeeded inside todo block: Expected out == NULL wmvcore.c:170: Test succeeded inside todo block: Expected out == NULL wmvcore.c:171: Test succeeded inside todo block: Expected out == NULL wmvcore.c:172: Test succeeded inside todo block: Expected out == NULL