Use temporary matrix in __gluInvertMatrixd() to fix aliasing problem (see bugs 12269, 6748)

This commit is contained in:
Brian
2007-09-03 16:20:05 -06:00
parent 2f8ff58c0e
commit c2e1ee08b0

View File

@@ -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;
}