Commit Diff


commit - 9b88e78ce7dfa88adba6acc7e68ae6fa557d48d1
commit + 45f209d712e46bfabc19ea1f2773bb1d1d230d42
blob - 5e0f78693f0011f1b6262c49bfa355856ece0bea
blob + 60d49e521af48a0675ac56b7479fb093cd2df794
--- lib/commit_graph.c
+++ lib/commit_graph.c
@@ -437,18 +437,21 @@ add_node(struct got_commit_graph_node **new_node, int 
 			err = NULL;
 			*branch_done = 1;
 		} else {
+			got_object_idset_remove(NULL, graph->node_ids,
+			    &node->id);
 			free_node(node);
 			return err;
 		}
 	}
 
-	if (*changed)
-		add_node_to_iter_list(graph, node, child_node);
-
-	if (err)
-		free_node(node);
-	else
+	if (err) {
+		got_object_idset_remove(NULL, graph->node_ids, &node->id);
+		free_node(node);
+	} else {
+		if (*changed)
+			add_node_to_iter_list(graph, node, child_node);
 		*new_node = node;
+	}
 
 	return err;
 }