Nikolay Sivov : d3d10/effect: Handle SetResource() called on null variable instance.
Alexandre Julliard
julliard at winehq.org
Fri Aug 20 16:12:56 CDT 2021
Module: wine
Branch: master
Commit: 455239e3791e1cce37ec8d2c7b3e950474c79d69
URL: https://source.winehq.org/git/wine.git/?a=commit;h=455239e3791e1cce37ec8d2c7b3e950474c79d69
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Wed Aug 18 10:51:52 2021 +0300
d3d10/effect: Handle SetResource() called on null variable instance.
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/d3d10/effect.c | 3 +++
dlls/d3d10/tests/effect.c | 9 ++++++++-
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/dlls/d3d10/effect.c b/dlls/d3d10/effect.c
index 0ee63ed41d5..520f816098f 100644
--- a/dlls/d3d10/effect.c
+++ b/dlls/d3d10/effect.c
@@ -6237,6 +6237,9 @@ static HRESULT STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_SetResour
TRACE("iface %p, resource %p.\n", iface, resource);
+ if (!d3d10_effect_shader_resource_variable_IsValid(iface))
+ return E_FAIL;
+
set_shader_resource_variable(&resource, v->u.resource.srv);
return S_OK;
diff --git a/dlls/d3d10/tests/effect.c b/dlls/d3d10/tests/effect.c
index 53e2d52c496..9a217993e7e 100644
--- a/dlls/d3d10/tests/effect.c
+++ b/dlls/d3d10/tests/effect.c
@@ -5698,9 +5698,16 @@ static void test_effect_resource_variable(void)
effect_desc.SharedGlobalVariables);
ok(effect_desc.Techniques == 1, "Unexpected techniques count %u.\n", effect_desc.Techniques);
+ create_effect_texture_resource(device, &srv0, &tex0);
+
+ /* SetResource() on null resource variable. */
+ var = effect->lpVtbl->GetVariableByName(effect, "dummy name");
+ t0 = var->lpVtbl->AsShaderResource(var);
+ hr = t0->lpVtbl->SetResource(t0, srv0);
+ ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
+
var = effect->lpVtbl->GetVariableByName(effect, "t0");
t0 = get_effect_shader_resource_variable(var);
- create_effect_texture_resource(device, &srv0, &tex0);
hr = t0->lpVtbl->SetResource(t0, srv0);
ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
More information about the wine-cvs
mailing list