summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Andrieu <oandrieu@gmail.com>2009-12-02 00:11:09 +0100
committerOlivier Andrieu <oandrieu@gmail.com>2009-12-02 00:11:09 +0100
commita5c5ee9f6431d667b8cd88c7706856396afb0f62 (patch)
treea3f04a6fdba0b6267f3edd874c5ff3c32e887739
parent1b8fc3cca643263168111793339e18f48c22d952 (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.c7
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
}