This is an automated email from the ASF dual-hosted git repository. tison pushed a commit to branch check-seed in repository https://gitbox.apache.org/repos/asf/datasketches-rust.git
commit dbf7f65612a5ac50ede239c7579d4fb6329f8b79 Author: tison <[email protected]> AuthorDate: Sun Feb 8 16:53:56 2026 +0800 chore: check seed for CpcSketch and CountMinSketch Signed-off-by: tison <[email protected]> --- datasketches/src/hash/mod.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/datasketches/src/hash/mod.rs b/datasketches/src/hash/mod.rs index 492e45e..87eaf22 100644 --- a/datasketches/src/hash/mod.rs +++ b/datasketches/src/hash/mod.rs @@ -39,15 +39,21 @@ pub(crate) const DEFAULT_UPDATE_SEED: u64 = 9001; /// Computes and checks the 16-bit seed hash from the given long seed. /// -/// The seed hash may not be zero in order to maintain compatibility with older serialized -/// versions that did not have this concept. +/// The computed seed hash must not be zero in order to maintain compatibility with older +/// serialized versions that did not have this concept. +/// +/// # Panics +/// +/// Panics if the computed seed hash is zero. pub(crate) fn compute_seed_hash(seed: u64) -> u16 { use std::hash::Hasher; let mut hasher = MurmurHash3X64128::with_seed(0); hasher.write(&seed.to_le_bytes()); let (h1, _) = hasher.finish128(); - (h1 & 0xffff) as u16 + let seed_hash = (h1 & 0xffff) as u16; + assert_ne!(seed_hash, 0); + seed_hash } /// Reads an u64 from a byte slice in little-endian order. --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
