From 0621f412ff7986bc883a613d332f121da62e38fe Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Sun, 25 May 2008 00:55:36 -0400 Subject: [PATCH] [cairo-matrix] Move IS_FINITE(det) checks before det==0 checks I'm still getting floating point exceptions in test suite in a made-to-overflow test though. Not sure why isfinite() doesn't work. --- src/cairo-matrix.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/cairo-matrix.c b/src/cairo-matrix.c index b74327337..b704cdee0 100644 --- a/src/cairo-matrix.c +++ b/src/cairo-matrix.c @@ -490,10 +490,10 @@ cairo_matrix_invert (cairo_matrix_t *matrix) _cairo_matrix_compute_determinant (matrix, &det); - if (det == 0) + if (! ISFINITE (det)) return _cairo_error (CAIRO_STATUS_INVALID_MATRIX); - if (! ISFINITE (det)) + if (det == 0) return _cairo_error (CAIRO_STATUS_INVALID_MATRIX); _cairo_matrix_compute_adjoint (matrix); @@ -510,7 +510,7 @@ _cairo_matrix_is_invertible (const cairo_matrix_t *matrix) _cairo_matrix_compute_determinant (matrix, &det); - return det != 0. && ISFINITE (det); + return ISFINITE (det) && det != 0.; } void