# HG changeset patch # User Arseniy Alekseyev # Date 2023-02-16 18:46:44 # Node ID 6baea276a98543989cb990111f9c229d176f8b14 # Parent 5d7ba99da3b875d256c447800cd9fc188917541b rhg: use generic DestArr in hash_mangle This simplifies code a bit more, but comes with an extra memory copy in case [destlen == dest_vec.len()]. This is probably fine, but a follow-up change is removing that too. diff --git a/rust/hg-core/src/revlog/path_encode.rs b/rust/hg-core/src/revlog/path_encode.rs --- a/rust/hg-core/src/revlog/path_encode.rs +++ b/rust/hg-core/src/revlog/path_encode.rs @@ -545,8 +545,7 @@ fn hash_mangle(src: &[u8], sha: &[u8]) - src[s..].iter().rposition(|b| *b == b'.').map(|i| i + s) }; - let mut dest_vec = vec![0; MAXSTOREPATHLEN]; - let mut dest = Dest::create(&mut dest_vec); + let mut dest : DestArr = DestArr::create(); dest.write_bytes(b"dh/"); if let Some(last_slash) = last_slash { @@ -590,13 +589,7 @@ fn hash_mangle(src: &[u8], sha: &[u8]) - if let Some(l) = last_dot { dest.write_bytes(&src[l..]); } - let destlen = dest.len; - if destlen == dest_vec.len() { - dest_vec - } else { - // sometimes the path are shorter than MAXSTOREPATHLEN - dest_vec[..destlen].to_vec() - } + dest.contents().to_vec() } fn hash_encode(src: &[u8]) -> Vec {