Module: wine Branch: master Commit: b999ab16b3d5f69b3fa4b8c80a3a4d3f690c419e URL: http://source.winehq.org/git/wine.git/?a=commit;h=b999ab16b3d5f69b3fa4b8c80a...
Author: Rico Schüller kgbricola@web.de Date: Tue Sep 4 09:44:28 2012 +0200
d3dx9: Fix ID3DXConstantTable::GetConstantElement() for structs.
---
dlls/d3dx9_36/shader.c | 2 +- dlls/d3dx9_36/tests/shader.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/dlls/d3dx9_36/shader.c b/dlls/d3dx9_36/shader.c index 766b897..5745884 100644 --- a/dlls/d3dx9_36/shader.c +++ b/dlls/d3dx9_36/shader.c @@ -1009,7 +1009,7 @@ static D3DXHANDLE WINAPI ID3DXConstantTableImpl_GetConstantElement(ID3DXConstant
if (c && index < c->desc.Elements) { - if (c->constants) c = &c->constants[index]; + if (c->desc.Elements > 1) c = &c->constants[index]; TRACE("Returning constant %p\n", c); return handle_from_constant(c); } diff --git a/dlls/d3dx9_36/tests/shader.c b/dlls/d3dx9_36/tests/shader.c index 2792327..ad092ab 100644 --- a/dlls/d3dx9_36/tests/shader.c +++ b/dlls/d3dx9_36/tests/shader.c @@ -1848,6 +1848,12 @@ static void test_get_shader_constant_variables(void) element = ID3DXConstantTable_GetConstantByName(ctable, "s_2[0]", "invalid"); ok(element == NULL, "GetConstantByName failed\n");
+ constant = ID3DXConstantTable_GetConstantByName(ctable, NULL, "s_2[0]"); + ok(constant != NULL, "GetConstantByName failed\n"); + + element = ID3DXConstantTable_GetConstantElement(ctable, "s_2[0]", 0); + ok(constant == element, "GetConstantByName failed, got %p, expected %p\n", element, constant); + count = ID3DXConstantTable_Release(ctable); ok(count == 0, "Release failed, got %u, expected %u\n", count, 0); }