[PATCH 7/7] d3d11: Always initialize out shader pointer in CreateComputeShader().

Nikolay Sivov wine at gitlab.winehq.org
Fri May 27 07:23:38 CDT 2022


From: Nikolay Sivov <nsivov at codeweavers.com>

---
 dlls/d3d11/device.c      | 2 ++
 dlls/d3d11/tests/d3d11.c | 7 +++++++
 2 files changed, 9 insertions(+)

diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c
index b73df94b50c..3f08ae5f4f0 100644
--- a/dlls/d3d11/device.c
+++ b/dlls/d3d11/device.c
@@ -3615,6 +3615,8 @@ static HRESULT STDMETHODCALLTYPE d3d11_device_CreateComputeShader(ID3D11Device2
     TRACE("iface %p, byte_code %p, byte_code_length %Iu, class_linkage %p, shader %p.\n",
             iface, byte_code, byte_code_length, class_linkage, shader);
 
+    *shader = NULL;
+
     if (class_linkage)
         FIXME("Class linkage is not implemented yet.\n");
 
diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c
index 06cb2bc4273..9a1bd88dc8b 100644
--- a/dlls/d3d11/tests/d3d11.c
+++ b/dlls/d3d11/tests/d3d11.c
@@ -4823,6 +4823,7 @@ static void test_create_shader(const D3D_FEATURE_LEVEL feature_level)
     struct device_desc device_desc;
     ID3D11Device *device, *tmp;
     ID3D11GeometryShader *gs;
+    ID3D11ComputeShader *cs;
     ID3D11VertexShader *vs;
     ID3D11DomainShader *ds;
     ID3D11PixelShader *ps;
@@ -5014,6 +5015,12 @@ static void test_create_shader(const D3D_FEATURE_LEVEL feature_level)
     ok(hr == E_INVALIDARG, "Got unexpected hr %#lx.\n", hr);
     ok(!ds, "Unexpected pointer %p.\n", ds);
 
+    /* Compute shader */
+    ds = (void *)0xdeadbeef;
+    hr = ID3D11Device_CreateComputeShader(device, gs_4_0, sizeof(gs_4_0), NULL, &cs);
+    ok(hr == E_INVALIDARG, "Got unexpected hr %#lx.\n", hr);
+    ok(!cs, "Unexpected pointer %p.\n", cs);
+
     refcount = ID3D11Device_Release(device);
     ok(!refcount, "Device has %lu references left.\n", refcount);
 }
-- 
GitLab

https://gitlab.winehq.org/wine/wine/-/merge_requests/141



More information about the wine-devel mailing list