]> granicus.if.org Git - poly2tri-c/commitdiff
Fix several reference counting issues
authorBarak Itkin <lightningismyname@gmail.com>
Sat, 30 Jun 2012 13:04:32 +0000 (16:04 +0300)
committerBarak Itkin <lightningismyname@gmail.com>
Sat, 30 Jun 2012 13:04:32 +0000 (16:04 +0300)
poly2tri-c/refine/cluster.c
poly2tri-c/refine/delaunay-terminator.c

index 95db9ec26397a8e94ae17d31e2dcd9909793fcce..3e6ce25567edddfb281c68948493cb491ea07f5f 100644 (file)
@@ -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);
index fc8a4cb9aaa4c7ad5718aefa3ef2e092e982dcc0..f39f0ecc471f99128a80b34557a7188dea7829e0 100644 (file)
@@ -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;