rust-dirstatemap: inline the last `get_or_insert` call
The `get_or_insert` method was dangerous because it did not take the
`DirstateMap` counters into account. This particular instance does not need
to update the counters.
Differential Revision: https://phab.mercurial-scm.org/D12527
--- a/rust/hg-core/src/dirstate_tree/dirstate_map.rs Fri Apr 08 16:04:17 2022 +0200
+++ b/rust/hg-core/src/dirstate_tree/dirstate_map.rs Fri Apr 08 16:05:47 2022 +0200
@@ -574,20 +574,6 @@
}
}
- pub(super) fn get_or_insert<'tree, 'path>(
- &'tree mut self,
- path: &HgPath,
- ) -> Result<&'tree mut Node<'on_disk>, DirstateV2ParseError> {
- Self::get_or_insert_node(
- self.on_disk,
- &mut self.unreachable_bytes,
- &mut self.root,
- path,
- WithBasename::to_cow_owned,
- |_| {},
- )
- }
-
fn get_or_insert_node<'tree, 'path>(
on_disk: &'on_disk [u8],
unreachable_bytes: &mut u32,
@@ -1438,7 +1424,14 @@
}
self.with_dmap_mut(|map| {
for path in files_with_p2_info.iter() {
- let node = map.get_or_insert(path)?;
+ let node = DirstateMap::get_or_insert_node(
+ map.on_disk,
+ &mut map.unreachable_bytes,
+ &mut map.root,
+ path,
+ WithBasename::to_cow_owned,
+ |_| {},
+ )?;
let entry =
node.data.as_entry_mut().expect("entry should exist");
entry.drop_merge_data();