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);