# HG changeset patch # User Raphaël Gomès # Date 2023-08-03 12:50:17 # Node ID e9d47e2f5dcf59fe57e9a26b040b98206f9cdc21 # Parent 274abd1562a265d2f58341d3e622cac764613800 rust-index: add missing special case for null rev This was an oversight, it was never a problem because we didn't use the index much for user-facing things in the past, which is the only real way of getting to this edge case. diff --git a/rust/hg-core/src/revlog/index.rs b/rust/hg-core/src/revlog/index.rs --- a/rust/hg-core/src/revlog/index.rs +++ b/rust/hg-core/src/revlog/index.rs @@ -7,7 +7,7 @@ use bytes_cast::{unaligned, BytesCast}; use super::REVIDX_KNOWN_FLAGS; use crate::errors::HgError; -use crate::node::{NODE_BYTES_LENGTH, STORED_NODE_ID_BYTES}; +use crate::node::{NODE_BYTES_LENGTH, NULL_NODE, STORED_NODE_ID_BYTES}; use crate::revlog::node::Node; use crate::revlog::{Revision, NULL_REVISION}; use crate::{Graph, GraphError, RevlogError, RevlogIndex, UncheckedRevision}; @@ -537,6 +537,9 @@ impl super::RevlogIndex for Index { } fn node(&self, rev: Revision) -> Option<&Node> { + if rev == NULL_REVISION { + return Some(&NULL_NODE); + } self.get_entry(rev).map(|entry| entry.hash()) } }