From b5a5ca16c3580b52688ad3063dfcb0a5a70a3053 Mon Sep 17 00:00:00 2001 From: Benjamin Lerman Date: Sun, 1 May 2022 16:58:58 +0200 Subject: [PATCH] Do not allow recursive locks. --- src/graph.rs | 8 +++++--- src/lib.rs | 4 +++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/graph.rs b/src/graph.rs index a98b022..6e274b0 100644 --- a/src/graph.rs +++ b/src/graph.rs @@ -98,8 +98,8 @@ where /// would introduce a cycle, the edge is rejected and `false` is returned. pub(crate) fn add_edge(&mut self, x: V, y: V) -> bool { if x == y { - // self-edges are not considered cycles - return true; + // self-edges are always considered cycles + return false; } let (_, out_edges, ub) = self.add_node(x); @@ -258,7 +258,9 @@ mod tests { for i in 0..NUM_NODES { for j in i..NUM_NODES { - edges.push((i, j)); + if i != j { + edges.push((i, j)); + } } } diff --git a/src/lib.rs b/src/lib.rs index 71c049e..2c15a7b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -357,7 +357,9 @@ mod tests { let mut edges = Vec::with_capacity(NUM_NODES * NUM_NODES); for i in 0..NUM_NODES { for j in i..NUM_NODES { - edges.push((i, j)); + if i != j { + edges.push((i, j)); + } } }