diff options
author | Brian <brian.paul@tungstengraphics.com> | 2007-09-03 16:20:05 -0600 |
---|---|---|
committer | Brian <brian.paul@tungstengraphics.com> | 2007-09-03 16:22:14 -0600 |
commit | 9f465350628010d06025d3fb8a1854122328bd15 (patch) | |
tree | 19d8c7a26e67807a21422b58ccfbfc11a03f41c4 /src/libutil | |
parent | 45579ac79082877a0947f7daaa0389add3d05363 (diff) | |
download | glu-9f465350628010d06025d3fb8a1854122328bd15.tar.gz |
Use temporary matrix in __gluInvertMatrixd() to fix aliasing problem (see bugs 12269, 6748)
Diffstat (limited to 'src/libutil')
-rw-r--r-- | src/libutil/project.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/libutil/project.c b/src/libutil/project.c index d22989c..356b46b 100644 --- a/src/libutil/project.c +++ b/src/libutil/project.c @@ -171,9 +171,9 @@ static void __gluMultMatrixVecd(const GLdouble matrix[16], const GLdouble in[4], ** Invert 4x4 matrix. ** Contributed by David Moore (See Mesa bug #6748) */ -static int __gluInvertMatrixd(const GLdouble m[16], GLdouble inv[16]) +static int __gluInvertMatrixd(const GLdouble m[16], GLdouble invOut[16]) { - double det; + double inv[16], det; int i; inv[0] = m[5]*m[10]*m[15] - m[5]*m[11]*m[14] - m[9]*m[6]*m[15] @@ -216,7 +216,7 @@ static int __gluInvertMatrixd(const GLdouble m[16], GLdouble inv[16]) det = 1.0 / det; for (i = 0; i < 16; i++) - inv[i] *= det; + invOut[i] = inv[i] * det; return GL_TRUE; } |