]> granicus.if.org Git - graphviz/commitdiff
anticipate find_tight_subtree() returning NULL
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 14 Nov 2020 19:44:21 +0000 (11:44 -0800)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 23 Jan 2021 04:39:06 +0000 (20:39 -0800)
Related to #1801.

lib/common/ns.c

index e1b0e285925283f225d6fa7a0845b2d6b1a7fe0c..e47ec66162f4ccde1372a67ffa5b78f6bf7faecf 100644 (file)
@@ -493,7 +493,7 @@ int feasible_tree(void)
   Agedge_t *ee;
   subtree_t **tree, *tree0, *tree1;
   int i, subtree_count = 0;
-  STheap_t *heap;
+  STheap_t *heap = NULL;
   int error = 0;
 
   /* initialization */
@@ -506,6 +506,10 @@ int feasible_tree(void)
   for (n = GD_nlist(G); n; n = ND_next(n)) {
         if (ND_subtree(n) == 0) {
                 tree[subtree_count] = find_tight_subtree(n);
+                if (tree[subtree_count] == NULL) {
+                    error = 2;
+                    goto end;
+                }
                 subtree_count++;
         }
   }
@@ -522,10 +526,11 @@ int feasible_tree(void)
     STheapify(heap,tree1->heap_index);
   }
 
+end:
   free(heap);
   for (i = 0; i < subtree_count; i++) free(tree[i]);
   free(tree);
-  if (error) return 1;
+  if (error) return error;
   assert(Tree_edge.size == N_nodes - 1);
   init_cutvalues();
   return 0;