# HG changeset patch # User Raphaël Gomès # Date 2023-09-11 09:52:33 # Node ID 9929c8a73488668b7148b9bde36817c5ccb8f7c1 # Parent 3aca98a35727ad5357d193b79014de6c556113b1 rust-revlog: split logic for `rawdata` to prepare for `UncheckedRevision` use In the next changeset, we will change the logic to use `UncheckedRevision` in the non-general delta case. The general delta case will use the "checked" path since `base_rev_or_base_of_delta_chain` will be checked. diff --git a/rust/hg-core/src/revlog/mod.rs b/rust/hg-core/src/revlog/mod.rs --- a/rust/hg-core/src/revlog/mod.rs +++ b/rust/hg-core/src/revlog/mod.rs @@ -537,13 +537,14 @@ impl<'revlog> RevlogEntry<'revlog> { // [_chaininfo] and in [index_deltachain]. let uses_generaldelta = self.revlog.index.uses_generaldelta(); while let Some(base_rev) = entry.base_rev_or_base_of_delta_chain { - let base_rev = if uses_generaldelta { - base_rev + entry = if uses_generaldelta { + delta_chain.push(entry); + self.revlog.get_entry_internal(base_rev)? } else { - entry.rev - 1 + let base_rev = entry.rev - 1; + delta_chain.push(entry); + self.revlog.get_entry_internal(base_rev)? }; - delta_chain.push(entry); - entry = self.revlog.get_entry_internal(base_rev)?; } let data = if delta_chain.is_empty() {