From b69038e3d96bd4eee19be6d6c6de7d4abb03460d Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sat, 8 Nov 2014 19:29:53 +0100 Subject: [PATCH] d3dx9_36: Allow NULL pointer for optional arguments of D3DXIntersectTri. --- dlls/d3dx9_36/mesh.c | 6 +++--- dlls/d3dx9_36/tests/mesh.c | 9 +++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/dlls/d3dx9_36/mesh.c b/dlls/d3dx9_36/mesh.c index 9aece61629c..6f268f2962b 100644 --- a/dlls/d3dx9_36/mesh.c +++ b/dlls/d3dx9_36/mesh.c @@ -2407,9 +2407,9 @@ BOOL WINAPI D3DXIntersectTri(const D3DXVECTOR3 *p0, const D3DXVECTOR3 *p1, const D3DXVec4Transform(&vec, &vec, &m); if ( (vec.x >= 0.0f) && (vec.y >= 0.0f) && (vec.x + vec.y <= 1.0f) && (vec.z >= 0.0f) ) { - *pu = vec.x; - *pv = vec.y; - *pdist = fabsf( vec.z ); + if (pu) *pu = vec.x; + if (pv) *pv = vec.y; + if (pdist) *pdist = fabsf( vec.z ); return TRUE; } } diff --git a/dlls/d3dx9_36/tests/mesh.c b/dlls/d3dx9_36/tests/mesh.c index 870f62af126..dac0f60c23b 100644 --- a/dlls/d3dx9_36/tests/mesh.c +++ b/dlls/d3dx9_36/tests/mesh.c @@ -1104,6 +1104,9 @@ static void D3DXIntersectTriTest(void) ok( compare(exp_v,got_v), "Expected v = %f, got %f\n",exp_v,got_v); ok( compare(exp_dist,got_dist), "Expected distance = %f, got %f\n",exp_dist,got_dist); + got_res = D3DXIntersectTri(&vertex[0], &vertex[1], &vertex[2], &position, &ray, NULL, NULL, NULL); + ok(got_res == exp_res, "Expected result = %d, got %d\n", exp_res, got_res); + /*Only positive ray is taken in account*/ vertex[0].x = 1.0f; vertex[0].y = 0.0f; vertex[0].z = 0.0f; @@ -1119,6 +1122,9 @@ static void D3DXIntersectTriTest(void) got_res = D3DXIntersectTri(&vertex[0],&vertex[1],&vertex[2],&position,&ray,&got_u,&got_v,&got_dist); ok( got_res == exp_res, "Expected result = %d, got %d\n",exp_res,got_res); + got_res = D3DXIntersectTri(&vertex[0], &vertex[1], &vertex[2], &position, &ray, NULL, NULL, NULL); + ok(got_res == exp_res, "Expected result = %d, got %d\n", exp_res, got_res); + /*Intersection between ray and triangle in a same plane is considered as empty*/ vertex[0].x = 4.0f; vertex[0].y = 0.0f; vertex[0].z = 0.0f; @@ -1133,6 +1139,9 @@ static void D3DXIntersectTriTest(void) got_res = D3DXIntersectTri(&vertex[0],&vertex[1],&vertex[2],&position,&ray,&got_u,&got_v,&got_dist); ok( got_res == exp_res, "Expected result = %d, got %d\n",exp_res,got_res); + + got_res = D3DXIntersectTri(&vertex[0], &vertex[1], &vertex[2], &position, &ray, NULL, NULL, NULL); + ok(got_res == exp_res, "Expected result = %d, got %d\n", exp_res, got_res); } static void D3DXCreateMeshTest(void)