summaryrefslogtreecommitdiffstats
path: root/gfx/cairo/ignore-rank0.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/cairo/ignore-rank0.patch')
-rw-r--r--gfx/cairo/ignore-rank0.patch20
1 files changed, 20 insertions, 0 deletions
diff --git a/gfx/cairo/ignore-rank0.patch b/gfx/cairo/ignore-rank0.patch
new file mode 100644
index 000000000..7e20f66fb
--- /dev/null
+++ b/gfx/cairo/ignore-rank0.patch
@@ -0,0 +1,20 @@
+diff --git a/gfx/cairo/cairo/src/cairo-gstate.c b/gfx/cairo/cairo/src/cairo-gstate.c
+index 0439bcf..32a5c4b 100644
+--- a/gfx/cairo/cairo/src/cairo-gstate.c
++++ b/gfx/cairo/cairo/src/cairo-gstate.c
+@@ -1271,8 +1271,13 @@ _cairo_gstate_set_font_matrix (cairo_gstate_t *gstate,
+ if (memcmp (matrix, &gstate->font_matrix, sizeof (cairo_matrix_t)) == 0)
+ return CAIRO_STATUS_SUCCESS;
+
+- if (! _cairo_matrix_is_invertible (matrix))
+- return _cairo_error (CAIRO_STATUS_INVALID_MATRIX);
++ if (! _cairo_matrix_is_invertible (matrix)) {
++ /* rank 0 matrices are ok even though they are not invertible */
++ if (!(matrix->xx == 0. && matrix->xy == 0. &&
++ matrix->yx == 0. && matrix->yy == 0.)) {
++ return _cairo_error (CAIRO_STATUS_INVALID_MATRIX);
++ }
++ }
+
+ _cairo_gstate_unset_scaled_font (gstate);
+