From fd67ddd56e011b8efa3b7baf66db62c81f87171b Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Mon, 17 Oct 2011 10:19:10 +0100 Subject: [PATCH] matrix: check DIRTY_TYPE flag in _cogl_matrix_print when printing a matrix we aim to print out the matrix type but we weren't checking the flags first to see if the type is valid. We now check for the DIRTY_TYPE flag and if not set we also validate the matrix type isn't out of range. Reviewed-by: Neil Roberts --- cogl/cogl-matrix.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/cogl/cogl-matrix.c b/cogl/cogl-matrix.c index f0bcdb795..19e6589cb 100644 --- a/cogl/cogl-matrix.c +++ b/cogl/cogl-matrix.c @@ -107,7 +107,8 @@ enum CoglMatrixType { COGL_MATRIX_TYPE_PERSPECTIVE, /**< perspective projection matrix */ COGL_MATRIX_TYPE_2D, /**< 2-D transformation */ COGL_MATRIX_TYPE_2D_NO_ROT, /**< 2-D scale & translate only */ - COGL_MATRIX_TYPE_3D /**< 3-D transformation */ + COGL_MATRIX_TYPE_3D, /**< 3-D transformation */ + COGL_MATRIX_N_TYPES } ; #define DEG2RAD (G_PI/180.0) @@ -372,8 +373,15 @@ print_matrix_floats (const float m[16]) void _cogl_matrix_print (const CoglMatrix *matrix) { - g_print ("Matrix type: %s, flags: %x\n", - types[matrix->type], (int)matrix->flags); + if (!(matrix->flags & MAT_DIRTY_TYPE)) + { + g_return_if_fail (matrix->type < COGL_MATRIX_N_TYPES); + g_print ("Matrix type: %s, flags: %x\n", + types[matrix->type], (int)matrix->flags); + } + else + g_print ("Matrix type: DIRTY, flags: %x\n", (int)matrix->flags); + print_matrix_floats ((float *)matrix); g_print ("Inverse: \n"); if (!(matrix->flags & MAT_DIRTY_INVERSE))