From: Barak Itkin Date: Sat, 30 Jun 2012 13:04:32 +0000 (+0300) Subject: Fix several reference counting issues X-Git-Tag: p2tc-0.1.0~28 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3afe3f253e06eea7e2f3d33302522aa17de5ce63;p=poly2tri-c Fix several reference counting issues --- diff --git a/poly2tri-c/refine/cluster.c b/poly2tri-c/refine/cluster.c index 95db9ec..3e6ce25 100644 --- a/poly2tri-c/refine/cluster.c +++ b/poly2tri-c/refine/cluster.c @@ -75,14 +75,11 @@ p2tr_cluster_get_for (P2trPoint *P, g_queue_init (&cluster->edges); if (P == E->end) - { - E = p2tr_edge_ref (E->mirror); - p2tr_edge_unref (E->mirror); - } + E = E->mirror; else if (P != P2TR_EDGE_START (E)) p2tr_exception_programmatic ("Unexpected point for the edge!"); - g_queue_push_head (&cluster->edges, E); + g_queue_push_head (&cluster->edges, p2tr_edge_ref (E)); current = E; next = p2tr_point_edge_cw (P, current); @@ -91,8 +88,7 @@ p2tr_cluster_get_for (P2trPoint *P, && (temp_angle = p2tr_edge_angle_between (current->mirror, next)) <= P2TR_CLUSTER_LIMIT_ANGLE && p2tr_cluster_cw_tri_between_is_in_domain (current, next)) { - g_queue_push_tail (&cluster->edges, next); - p2tr_edge_ref (next); + g_queue_push_tail (&cluster->edges, p2tr_edge_ref (next)); current = next; next = p2tr_point_edge_cw (P, current); cluster->min_angle = MIN (cluster->min_angle, temp_angle); @@ -104,8 +100,7 @@ p2tr_cluster_get_for (P2trPoint *P, && (temp_angle = p2tr_edge_angle_between (current->mirror, next)) <= P2TR_CLUSTER_LIMIT_ANGLE && p2tr_cluster_cw_tri_between_is_in_domain (next, current)) { - g_queue_push_head (&cluster->edges, next); - p2tr_edge_ref (next); + g_queue_push_head (&cluster->edges, p2tr_edge_ref (next)); current = next; next = p2tr_point_edge_ccw (P, current); cluster->min_angle = MIN(cluster->min_angle, temp_angle); diff --git a/poly2tri-c/refine/delaunay-terminator.c b/poly2tri-c/refine/delaunay-terminator.c index fc8a4cb..f39f0ec 100644 --- a/poly2tri-c/refine/delaunay-terminator.c +++ b/poly2tri-c/refine/delaunay-terminator.c @@ -95,7 +95,7 @@ p2tr_cdt_get_segments_encroached_by (P2trCDT *self, && p2tr_hash_set_contains (encroached_edges, e->mirror) == FALSE && p2tr_cdt_is_encroached_by (self, e, C)) { - p2tr_hash_set_insert (encroached_edges, e); + p2tr_hash_set_insert (encroached_edges, p2tr_edge_ref (e)); } return encroached_edges;