From 4d1b9036cc1add086ea3c41863a42f6809a3a7a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Crozet?= Date: Fri, 11 Jul 2025 16:53:56 +0200 Subject: [PATCH 1/2] fix leaf node index update after a removal that results in a partial root --- src/partitioning/bvh/bvh_tree.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/partitioning/bvh/bvh_tree.rs b/src/partitioning/bvh/bvh_tree.rs index 777d000d..ead3b7c4 100644 --- a/src/partitioning/bvh/bvh_tree.rs +++ b/src/partitioning/bvh/bvh_tree.rs @@ -703,7 +703,9 @@ impl Bvh { // There is no parent pointer to update. if !is_right { // We remove the left leaf. Move the right leaf in its place. + let moved_index = self.nodes[0].right.children; self.nodes[0].left = self.nodes[0].right; + self.leaf_node_indices[moved_index as usize] = BvhNodeIndex::left(0); } // Now we can just clear the right leaf. From 814f43b46c56972561964d1d7b6e43a5f35adc1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Crozet?= Date: Fri, 11 Jul 2025 16:54:28 +0200 Subject: [PATCH 2/2] Release v0.22.0-beta.1 --- CHANGELOG.md | 6 ++++++ crates/parry2d-f64/Cargo.toml | 2 +- crates/parry2d/Cargo.toml | 2 +- crates/parry3d-f64/Cargo.toml | 2 +- crates/parry3d/Cargo.toml | 2 +- 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5967c511..59d35eec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# 0.22.0-beta.1 + +### Fixed + +- Fix invalid BVH state that could be reached after a removal resulting in a partial root. + # 0.22.0-beta.0 ### Added diff --git a/crates/parry2d-f64/Cargo.toml b/crates/parry2d-f64/Cargo.toml index 3e4c4125..d3823a08 100644 --- a/crates/parry2d-f64/Cargo.toml +++ b/crates/parry2d-f64/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "parry2d-f64" -version = "0.22.0-beta.0" +version = "0.22.0-beta.1" authors = ["Sébastien Crozet "] description = "2 dimensional collision detection library in Rust. 64-bit precision version." diff --git a/crates/parry2d/Cargo.toml b/crates/parry2d/Cargo.toml index 9728b5f5..664398f2 100644 --- a/crates/parry2d/Cargo.toml +++ b/crates/parry2d/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "parry2d" -version = "0.22.0-beta.0" +version = "0.22.0-beta.1" authors = ["Sébastien Crozet "] description = "2 dimensional collision detection library in Rust." diff --git a/crates/parry3d-f64/Cargo.toml b/crates/parry3d-f64/Cargo.toml index 867247eb..68e98fc3 100644 --- a/crates/parry3d-f64/Cargo.toml +++ b/crates/parry3d-f64/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "parry3d-f64" -version = "0.22.0-beta.0" +version = "0.22.0-beta.1" authors = ["Sébastien Crozet "] description = "3 dimensional collision detection library in Rust. 64-bits precision version." diff --git a/crates/parry3d/Cargo.toml b/crates/parry3d/Cargo.toml index b4a1513f..33236127 100644 --- a/crates/parry3d/Cargo.toml +++ b/crates/parry3d/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "parry3d" -version = "0.22.0-beta.0" +version = "0.22.0-beta.1" authors = ["Sébastien Crozet "] description = "3 dimensional collision detection library in Rust."