diff --git a/cairo-active_edges.patch b/cairo-active_edges.patch new file mode 100644 index 0000000..5421f95 --- /dev/null +++ b/cairo-active_edges.patch @@ -0,0 +1,18 @@ +https://bugs.freedesktop.org/show_bug.cgi?id=59098 +--- cairo-1.14.2.orig/src/cairo-polygon-intersect.c ++++ cairo-1.14.2/src/cairo-polygon-intersect.c +@@ -1236,11 +1236,10 @@ active_edges (cairo_bo_edge_t *left, + edges_end (right, top, polygon); + + winding[right->a_or_b] += right->edge.dir; +- if (is_zero (winding)) { +- if (right->next == NULL || +- ! edges_colinear (right, right->next)) ++ if (!right->next) ++ return; ++ if (is_zero (winding) && ! edges_colinear (right, right->next)) + break; +- } + + right = right->next; + } while (1); diff --git a/cairo.changes b/cairo.changes index a27fe54..c6e4b63 100644 --- a/cairo.changes +++ b/cairo.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Sat Oct 24 12:24:48 UTC 2015 - olaf@aepfle.de + +- Fix another segfault in active_edges (fdo#59098) + cairo-active_edges.patch + ------------------------------------------------------------------- Sat May 16 10:42:31 CEST 2015 - ro@suse.de diff --git a/cairo.spec b/cairo.spec index 3c704cd..f5ca131 100644 --- a/cairo.spec +++ b/cairo.spec @@ -33,6 +33,8 @@ Patch0: cairo-modules-no-version.patch Patch1: cairo-render-thin-lines.patch # PATCH-FIX-UPSTREAM cairo-xlib-endianness.patch fdo#63461 bnc#882951 fcrozat@suse.com -- Fix crash when client and server have different endianness Patch2: cairo-xlib-endianness.patch +# PATCH-FIX-UPSTREAM cairo-active_edges.patch fdo#59098 olaf@aepfle.de -- segfault in cairo-polygon-intersect.c: active_edges +Patch59098: cairo-active_edges.patch BuildRequires: gtk-doc # Needed by patch0 BuildRequires: libtool @@ -144,6 +146,7 @@ cairo. # fix_for_fdo77298.patch %patch1 -p1 %patch2 -p1 +%patch59098 -p1 %build # Needed by patch0 and patch1