[PATCH] d3d11: Always initialize out view pointer in CreateRenderTargetView().
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51195 Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/d3d10core/tests/d3d10core.c | 4 ++++ dlls/d3d11/device.c | 4 ++++ dlls/d3d11/tests/d3d11.c | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/dlls/d3d10core/tests/d3d10core.c b/dlls/d3d10core/tests/d3d10core.c index d7fc9efa901..ca12f185ec5 100644 --- a/dlls/d3d10core/tests/d3d10core.c +++ b/dlls/d3d10core/tests/d3d10core.c @@ -2939,8 +2939,10 @@ static void test_create_rendertarget_view(void) if (!enable_debug_layer) { + rtview = (void *)0xdeadbeef; hr = ID3D10Device_CreateRenderTargetView(device, NULL, &rtv_desc, &rtview); ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr); + ok(!rtview, "Unexpected pointer %p.\n", rtview); } expected_refcount = get_refcount(device) + 1; @@ -3057,8 +3059,10 @@ static void test_create_rendertarget_view(void) } get_rtv_desc(&rtv_desc, &invalid_desc_tests[i].rtv_desc); + rtview = (void *)0xdeadbeef; hr = ID3D10Device_CreateRenderTargetView(device, texture, &rtv_desc, &rtview); ok(hr == E_INVALIDARG, "Test %u: Got unexpected hr %#x.\n", i, hr); + ok(!rtview, "Unexpected pointer %p.\n", rtview); ID3D10Resource_Release(texture); } diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c index 546449037ce..626e4889708 100644 --- a/dlls/d3d11/device.c +++ b/dlls/d3d11/device.c @@ -3334,6 +3334,8 @@ static HRESULT STDMETHODCALLTYPE d3d11_device_CreateRenderTargetView(ID3D11Devic TRACE("iface %p, resource %p, desc %p, view %p.\n", iface, resource, desc, view); + *view = NULL; + if (!resource) return E_INVALIDARG; @@ -5957,6 +5959,8 @@ static HRESULT STDMETHODCALLTYPE d3d10_device_CreateRenderTargetView(ID3D10Devic TRACE("iface %p, resource %p, desc %p, view %p.\n", iface, resource, desc, view); + *view = NULL; + if (!resource) return E_INVALIDARG; diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c index a76e5fa1295..b8fa462dc39 100644 --- a/dlls/d3d11/tests/d3d11.c +++ b/dlls/d3d11/tests/d3d11.c @@ -4050,8 +4050,10 @@ static void test_create_rendertarget_view(void) if (!enable_debug_layer) { + rtview = (void *)0xdeadbeef; hr = ID3D11Device_CreateRenderTargetView(device, NULL, &rtv_desc, &rtview); ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr); + ok(!rtview, "Unexpected pointer %p.\n", rtview); } expected_refcount = get_refcount(device) + 1; @@ -4168,8 +4170,10 @@ static void test_create_rendertarget_view(void) } get_rtv_desc(&rtv_desc, &invalid_desc_tests[i].rtv_desc); + rtview = (void *)0xdeadbeef; hr = ID3D11Device_CreateRenderTargetView(device, texture, &rtv_desc, &rtview); ok(hr == E_INVALIDARG, "Test %u: Got unexpected hr %#x.\n", i, hr); + ok(!rtview, "Unexpected pointer %p.\n", rtview); ID3D11Resource_Release(texture); } -- 2.34.1
Hi, While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check? Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=105062 Your paranoid android. === debian11 (32 bit Hindi:India report) === d3d11: d3d11.c:9774: Test failed: d3d11.c:15250: Test marked todo: Got hr 0 for WRITE_DISCARD. === debian11 (32 bit Chinese:China report) === d3d11: d3d11.c:9774: Test failed: d3d11.c:15181: Test marked todo: Got hr 0 for WRITE_DISCARD. d3d11.c:28205: Test failed: Got texcoord {8.43750119e-001, 1.56249881e-001}, expected {8.43750000e-001, 1.56250000e-001} at (3, 3), offset 1.25000000e-001.
participants (3)
-
Henri Verbeet -
Marvin -
Nikolay Sivov