[PATCH 3/3] d3dx9: Fix zero object_id handling in d3dx9_base_effect_get_pass_desc().
Paul Gofman
gofmanp at gmail.com
Fri Sep 1 13:19:04 CDT 2017
Signed-off-by: Paul Gofman <gofmanp at gmail.com>
---
dlls/d3dx9_36/effect.c | 12 ++++--------
dlls/d3dx9_36/tests/effect.c | 1 -
2 files changed, 4 insertions(+), 9 deletions(-)
diff --git a/dlls/d3dx9_36/effect.c b/dlls/d3dx9_36/effect.c
index 75e093182d..ce2e5d86e5 100644
--- a/dlls/d3dx9_36/effect.c
+++ b/dlls/d3dx9_36/effect.c
@@ -1144,21 +1144,17 @@ static HRESULT d3dx9_base_effect_get_pass_desc(struct d3dx9_base_effect *base,
void *param_value;
BOOL param_dirty;
HRESULT hr;
+ void *data;
if (FAILED(hr = d3dx9_get_param_value_ptr(pass, &pass->states[i], ¶m_value, ¶m,
FALSE, ¶m_dirty)))
return hr;
- if (!param->object_id)
- {
- FIXME("Zero object ID in shader parameter.\n");
- return E_FAIL;
- }
-
+ data = param->object_id ? base->objects[param->object_id].data : NULL;
if (state_table[state->operation].class == SC_VERTEXSHADER)
- desc->pVertexShaderFunction = base->objects[param->object_id].data;
+ desc->pVertexShaderFunction = data;
else
- desc->pPixelShaderFunction = base->objects[param->object_id].data;
+ desc->pPixelShaderFunction = data;
}
}
diff --git a/dlls/d3dx9_36/tests/effect.c b/dlls/d3dx9_36/tests/effect.c
index 3a229666bb..220f26597f 100644
--- a/dlls/d3dx9_36/tests/effect.c
+++ b/dlls/d3dx9_36/tests/effect.c
@@ -7247,7 +7247,6 @@ static void test_effect_null_shader(void)
pass = effect->lpVtbl->GetPass(effect, "tech0", 0);
ok(!!pass, "GetPass() failed.\n");
hr = effect->lpVtbl->GetPassDesc(effect, pass, &desc);
- todo_wine
ok(hr == D3D_OK, "Got result %#x.\n", hr);
ok(!desc.pVertexShaderFunction, "Got non NULL vertex function.\n");
--
2.13.5
More information about the wine-patches
mailing list