mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-15 16:08:05 +02:00
Merge branch 'fix-bentley-ottmann' into 'master'
cairo-bentley-ottmann.c: Added NULL checks Closes #76 See merge request cairo/cairo!117
This commit is contained in:
commit
e8581aeded
1 changed files with 13 additions and 6 deletions
|
|
@ -544,7 +544,7 @@ sweep_line_delete_edge (sweep_line_t *sweep, edge_t *edge)
|
|||
{
|
||||
if (edge->right != NULL) {
|
||||
edge_t *next = edge->next;
|
||||
if (next->x == edge->x) {
|
||||
if (next && next->x == edge->x) {
|
||||
next->top = edge->top;
|
||||
next->right = edge->right;
|
||||
} else
|
||||
|
|
@ -554,8 +554,8 @@ sweep_line_delete_edge (sweep_line_t *sweep, edge_t *edge)
|
|||
if (sweep->cursor == edge)
|
||||
sweep->cursor = edge->prev;
|
||||
|
||||
edge->prev->next = edge->next;
|
||||
edge->next->prev = edge->prev;
|
||||
if(edge->prev) edge->prev->next = edge->next;
|
||||
if(edge->next) edge->next->prev = edge->prev;
|
||||
}
|
||||
|
||||
static inline cairo_bool_t
|
||||
|
|
@ -564,10 +564,17 @@ sweep_line_delete (sweep_line_t *sweep, rectangle_t *rectangle)
|
|||
cairo_bool_t update;
|
||||
|
||||
update = TRUE;
|
||||
if (sweep->fill_rule == CAIRO_FILL_RULE_WINDING &&
|
||||
rectangle->left.prev->dir == rectangle->left.dir)
|
||||
|
||||
if (sweep->fill_rule == CAIRO_FILL_RULE_WINDING)
|
||||
{
|
||||
update = rectangle->left.next != &rectangle->right;
|
||||
if(rectangle->left.prev == NULL)
|
||||
{
|
||||
update = FALSE; /* no change of direction */
|
||||
}
|
||||
else if(rectangle->left.prev->dir == rectangle->left.dir)
|
||||
{
|
||||
update = rectangle->left.next != &rectangle->right; /* no right side, so no change of direction */
|
||||
}
|
||||
}
|
||||
|
||||
sweep_line_delete_edge (sweep, &rectangle->left);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue