=?UTF-8?Q?Rico=20Sch=C3=BCller=20?=: d3dx9: Improve argument check in D3DXFindShaderComment().

Alexandre Julliard julliard at winehq.org
Tue Oct 25 13:50:28 CDT 2011


Module: wine
Branch: master
Commit: be68d56efc0e7dc1a6aab644ad3fabfa5650fc6e
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=be68d56efc0e7dc1a6aab644ad3fabfa5650fc6e

Author: Rico Schüller <kgbricola at web.de>
Date:   Tue Oct 25 10:39:25 2011 +0200

d3dx9: Improve argument check in D3DXFindShaderComment().

---

 dlls/d3dx9_36/shader.c       |    3 +++
 dlls/d3dx9_36/tests/shader.c |   12 ++++++++++--
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/dlls/d3dx9_36/shader.c b/dlls/d3dx9_36/shader.c
index bc5e002..b538edd 100644
--- a/dlls/d3dx9_36/shader.c
+++ b/dlls/d3dx9_36/shader.c
@@ -153,6 +153,9 @@ HRESULT WINAPI D3DXFindShaderComment(CONST DWORD* byte_code, DWORD fourcc, LPCVO
 
     TRACE("(%p, %x, %p, %p)\n", byte_code, fourcc, data, size);
 
+    if (data) *data = NULL;
+    if (size) *size = 0;
+
     if (!byte_code)
         return D3DERR_INVALIDCALL;
 
diff --git a/dlls/d3dx9_36/tests/shader.c b/dlls/d3dx9_36/tests/shader.c
index 9220e28..8d82a68 100644
--- a/dlls/d3dx9_36/tests/shader.c
+++ b/dlls/d3dx9_36/tests/shader.c
@@ -215,23 +215,31 @@ static void test_get_shader_version(void)
 static void test_find_shader_comment(void)
 {
     HRESULT hr;
-    LPCVOID data;
-    UINT size;
+    LPCVOID data = (LPVOID)0xdeadbeef;
+    UINT size = 100;
 
     hr = D3DXFindShaderComment(NULL, MAKEFOURCC('C','T','A','B'), &data, &size);
     ok(hr == D3DERR_INVALIDCALL, "Got result %x, expected %x (D3DERR_INVALIDCALL)\n", hr, D3DERR_INVALIDCALL);
+    ok(!data, "Got %p, expected NULL\n", data);
+    ok(!size, "Got %u, expected 0\n", size);
 
     hr = D3DXFindShaderComment(shader_with_ctab, MAKEFOURCC('C','T','A','B'), NULL, &size);
     ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr);
+    ok(size == 28, "Got %u, expected 28\n", size);
 
     hr = D3DXFindShaderComment(shader_with_ctab, MAKEFOURCC('C','T','A','B'), &data, NULL);
     ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr);
+    ok(data == (LPCVOID)(shader_with_ctab + 6), "Got result %p, expected %p\n", data, shader_with_ctab + 6);
 
     hr = D3DXFindShaderComment(shader_with_ctab, 0, &data, &size);
     ok(hr == S_FALSE, "Got result %x, expected 1 (S_FALSE)\n", hr);
+    ok(!data, "Got %p, expected NULL\n", data);
+    ok(!size, "Got %u, expected 0\n", size);
 
     hr = D3DXFindShaderComment(shader_with_ctab, MAKEFOURCC('X','X','X','X'), &data, &size);
     ok(hr == S_FALSE, "Got result %x, expected 1 (S_FALSE)\n", hr);
+    ok(!data, "Got %p, expected NULL\n", data);
+    ok(!size, "Got %u, expected 0\n", size);
 
     hr = D3DXFindShaderComment(shader_with_ctab, MAKEFOURCC('C','T','A','B'), &data, &size);
     ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr);




More information about the wine-cvs mailing list