Skip to content

Commit 9fab280

Browse files
committed
fix: rare npe happenned when iterating over the nodes
Signed-off-by: Valery Piashchynski <[email protected]>
1 parent 04e7449 commit 9fab280

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

graph/graph.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,11 +155,18 @@ func (g *Graph) Remove(plugin any) []*Vertex {
155155

156156
// remove all edges where dest is our plugin prepared to delete
157157
for _, v := range g.vertices {
158+
// since we are deleting while iterating, we need to create a new slice
159+
// to prevent index out of range or similar errors
160+
newEdges := make([]*edge, 0, len(v.edges))
158161
for i := range v.edges {
159162
if v.edges[i].dest == plugin {
160-
v.edges = slices.Delete(v.edges, i, i+1)
163+
// we found an edge which is pointing to our plugin,
164+
// we need to remove it for the graph
165+
continue
161166
}
167+
newEdges = append(newEdges, v.edges[i])
162168
}
169+
v.edges = newEdges
163170
}
164171

165172
for i := range g.topologicalOrder {

0 commit comments

Comments
 (0)