=?UTF-8?Q?Rico=20Sch=C3=BCller=20?=: d3dx9: Always set the table = NULL in D3DXGetShaderConstantTableEx().
Alexandre Julliard
julliard at winehq.org
Tue Jan 8 13:58:43 CST 2013
Module: wine
Branch: master
Commit: a847b9dddb3875b4189104f02dbf319be8274803
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a847b9dddb3875b4189104f02dbf319be8274803
Author: Rico Schüller <kgbricola at web.de>
Date: Mon Jan 7 21:57:13 2013 +0100
d3dx9: Always set the table = NULL in D3DXGetShaderConstantTableEx().
---
dlls/d3dx9_36/shader.c | 4 +++-
dlls/d3dx9_36/tests/shader.c | 10 ++++++++--
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/dlls/d3dx9_36/shader.c b/dlls/d3dx9_36/shader.c
index 9269237..e266fe2 100644
--- a/dlls/d3dx9_36/shader.c
+++ b/dlls/d3dx9_36/shader.c
@@ -1629,7 +1629,9 @@ HRESULT WINAPI D3DXGetShaderConstantTableEx(const DWORD *byte_code, DWORD flags,
D3DXSHADER_CONSTANTINFO* constant_info;
DWORD i;
- TRACE("(%p, %x, %p)\n", byte_code, flags, constant_table);
+ TRACE("byte_code %p, flags %x, constant_table %p\n", byte_code, flags, constant_table);
+
+ if (constant_table) *constant_table = NULL;
if (!byte_code || !constant_table)
{
diff --git a/dlls/d3dx9_36/tests/shader.c b/dlls/d3dx9_36/tests/shader.c
index 8ec98ba..fb8f270 100644
--- a/dlls/d3dx9_36/tests/shader.c
+++ b/dlls/d3dx9_36/tests/shader.c
@@ -355,18 +355,22 @@ static void test_find_shader_comment(void)
static void test_get_shader_constant_table_ex(void)
{
- ID3DXConstantTable *constant_table = NULL;
+ ID3DXConstantTable *constant_table;
HRESULT hr;
LPVOID data;
DWORD size;
D3DXCONSTANTTABLE_DESC desc;
+ constant_table = (ID3DXConstantTable *)0xdeadbeef;
hr = D3DXGetShaderConstantTableEx(NULL, 0, &constant_table);
ok(hr == D3DERR_INVALIDCALL, "Got result %x, expected %x (D3DERR_INVALIDCALL)\n", hr, D3DERR_INVALIDCALL);
+ ok(constant_table == NULL, "D3DXGetShaderConstantTableEx() failed, got %p\n", constant_table);
/* No CTAB data */
+ constant_table = (ID3DXConstantTable *)0xdeadbeef;
hr = D3DXGetShaderConstantTableEx(simple_ps, 0, &constant_table);
ok(hr == D3DXERR_INVALIDDATA, "Got result %x, expected %x (D3DXERR_INVALIDDATA)\n", hr, D3DXERR_INVALIDDATA);
+ ok(constant_table == NULL, "D3DXGetShaderConstantTableEx() failed, got %p\n", constant_table);
/* With invalid CTAB data */
hr = D3DXGetShaderConstantTableEx(shader_with_invalid_ctab, 0, &constant_table);
@@ -376,6 +380,7 @@ static void test_get_shader_constant_table_ex(void)
hr = D3DXGetShaderConstantTableEx(shader_with_ctab, 0, &constant_table);
ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr);
+ ok(constant_table != NULL, "D3DXGetShaderConstantTableEx() failed, got NULL\n");
if (constant_table)
{
@@ -399,8 +404,9 @@ static void test_get_shader_constant_table_ex(void)
hr = D3DXGetShaderConstantTableEx(shader_with_ctab_constants, 0, &constant_table);
ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr);
+ ok(constant_table != NULL, "D3DXGetShaderConstantTableEx() failed, got NULL\n");
- if (SUCCEEDED(hr))
+ if (constant_table)
{
D3DXHANDLE constant;
D3DXCONSTANT_DESC constant_desc;
More information about the wine-cvs
mailing list