diff options
author | Olivier Andrieu <oandrieu@gmail.com> | 2009-12-02 00:11:09 +0100 |
---|---|---|
committer | Olivier Andrieu <oandrieu@gmail.com> | 2009-12-02 00:11:09 +0100 |
commit | a5c5ee9f6431d667b8cd88c7706856396afb0f62 (patch) | |
tree | a3f04a6fdba0b6267f3edd874c5ff3c32e887739 | |
parent | 1b8fc3cca643263168111793339e18f48c22d952 (diff) |
check the status of the matrix_invert function
Contrary to the other functions of the matrix module, this one can
fail.
Thanks to Pierre-Marie Pédrot for reporting this.
-rw-r--r-- | src/ml_cairo_matrix.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/ml_cairo_matrix.c b/src/ml_cairo_matrix.c index 17ecff5..8ae5aa1 100644 --- a/src/ml_cairo_matrix.c +++ b/src/ml_cairo_matrix.c @@ -95,16 +95,19 @@ ml_cairo_matrix_rotate (value m, value a) CAMLprim value ml_cairo_matrix_invert (value m) { + cairo_status_t st; #ifndef ARCH_ALIGN_DOUBLE CAMLparam1(m); value v = cairo_matrix_alloc(); cairo_copy_matrix (v, m); - cairo_matrix_invert (cairo_matrix_t_val (v)); + st = cairo_matrix_invert (cairo_matrix_t_val (v)); + cairo_treat_status (st); CAMLreturn (v); #else cairo_matrix_t mat; ml_convert_cairo_matrix_in (m, &mat); - cairo_matrix_invert (&mat); + st = cairo_matrix_invert (&mat); + cairo_treat_status (st); return ml_convert_cairo_matrix_out (&mat); #endif } |