Re: [PATCH] d3dx: D3DXQuaternionToAxisAngle should not crash on NULLs in output parameters.
2016-02-25 11:36 GMT+01:00 Paul Gofman <gofmanp(a)gmail.com>:
Signed-off-by: Paul Gofman <gofmanp(a)gmail.com> --- dlls/d3dx9_36/math.c | 12 ++++++++---- dlls/d3dx9_36/tests/math.c | 5 +++++ 2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/dlls/d3dx9_36/math.c b/dlls/d3dx9_36/math.c index 5e8d51a..123bd2f 100644 --- a/dlls/d3dx9_36/math.c +++ b/dlls/d3dx9_36/math.c @@ -1652,10 +1652,14 @@ void WINAPI D3DXQuaternionToAxisAngle(const D3DXQUATERNION *pq, D3DXVECTOR3 *pax { TRACE("pq %p, paxis %p, pangle %p\n", pq, paxis, pangle);
- paxis->x = pq->x; - paxis->y = pq->y; - paxis->z = pq->z; - *pangle = 2.0f * acosf(pq->w); + if (paxis) + { + paxis->x = pq->x; + paxis->y = pq->y; + paxis->z = pq->z; + } + if (pangle) + *pangle = 2.0f * acosf(pq->w); }
/*_________________D3DXVec2_____________________*/ diff --git a/dlls/d3dx9_36/tests/math.c b/dlls/d3dx9_36/tests/math.c index ac4475d..a4e24da 100644 --- a/dlls/d3dx9_36/tests/math.c +++ b/dlls/d3dx9_36/tests/math.c @@ -1022,6 +1022,11 @@ static void D3DXQuaternionTest(void) D3DXQuaternionToAxisAngle(&nul,&axis,&angle); expect_vec3(expectedvec,axis); ok(relative_error(angle, expected ) < admitted_error, "Expected: %f, Got: %f\n", expected, angle); +/* test NULLs in output parameters */ + D3DXQuaternionToAxisAngle(&nul,&axis,NULL); + D3DXQuaternionToAxisAngle(&nul,NULL,&angle); + expect_vec3(expectedvec,axis); + ok(relative_error(angle, expected ) < admitted_error, "Expected: %f, Got: %f\n", expected, angle); }
Please indent the comment, or maybe (better IMO) just drop it altogether. Be consistent with whitespace after the comma and no whitespace before the ')'. Yes, I know, the code right above is broken exactly in the same way...
participants (1)
-
Matteo Bruni