From 3ce233678847647b1f0866638d66b2ab384a3f51 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Sat, 8 Jan 2022 16:03:08 +0300 Subject: [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 Signed-off-by: Henri Verbeet Signed-off-by: Alexandre Julliard (cherry picked from commit df8ef3a54fa87802932343cf8ad4e48fee375526) Signed-off-by: Michael Stefaniuc --- 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 4332ce2dcf2..83bd8596a22 100644 --- a/dlls/d3d10core/tests/d3d10core.c +++ b/dlls/d3d10core/tests/d3d10core.c @@ -2937,8 +2937,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; @@ -3055,8 +3057,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 e870399a83e..187ff1fd7b5 100644 --- a/dlls/d3d11/device.c +++ b/dlls/d3d11/device.c @@ -3054,6 +3054,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; @@ -5554,6 +5556,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 80fbc66e3fd..f03280f9a71 100644 --- a/dlls/d3d11/tests/d3d11.c +++ b/dlls/d3d11/tests/d3d11.c @@ -3936,8 +3936,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; @@ -4054,8 +4056,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); }