diff --git a/src/cairo-polygon-intersect.c b/src/cairo-polygon-intersect.c index 001e55ee0..6da16fad4 100644 --- a/src/cairo-polygon-intersect.c +++ b/src/cairo-polygon-intersect.c @@ -1158,7 +1158,7 @@ active_edges (cairo_bo_edge_t *left, if (! is_zero (winding)) break; - if unlikely ((left->deferred.other)) + if (unlikely (left->deferred.other)) edges_end (left, top, polygon); left = left->next; @@ -1168,7 +1168,10 @@ active_edges (cairo_bo_edge_t *left, right = left->next; do { - if unlikely ((right->deferred.other)) + if (! right) + return; + + if (unlikely (right->deferred.other)) edges_end (right, top, polygon); winding[right->a_or_b] += right->edge.dir;