From 40d05192c770090d3ed267cc9ee9a155ef8ec1d4 Mon Sep 17 00:00:00 2001 From: Mark Adler Date: Mon, 16 Feb 2026 21:44:25 -0800 Subject: Factor out a set_uniq() function to set the seed with noise. In preparation for using this in lieu of rand() for crypt.h. --- contrib/minizip/skipset.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/contrib/minizip/skipset.h b/contrib/minizip/skipset.h index beb67887..9bef1850 100644 --- a/contrib/minizip/skipset.h +++ b/contrib/minizip/skipset.h @@ -84,6 +84,11 @@ void set_seed(set_rand_t *gen, ui64_t seed, ui64_t seq) { gen->inc = (seq << 1) | 1; gen->state = (seed + gen->inc) * 6364136223846793005ULL + gen->inc; } +/* Start a unique random number sequence using bits from noise sources. */ +void set_uniq(set_rand_t *gen, const void *ptr) { + set_seed(gen, ((ui64_t)(ptrdiff_t)ptr << 32) ^ + ((ui64_t)time(NULL) << 12) ^ clock(), 0); +} /* Return 32 random bits, advancing the state *gen. */ ui32_t set_rand(set_rand_t *gen) { ui64_t state = gen->state; @@ -233,8 +238,7 @@ void set_start(set_t *set) { set_grow(set, set->head, 1, 1); /* one link back to head for an empty set */ *(unsigned char *)&set->head->key = 137; /* set id */ set->depth = 0; - set_seed(&set->gen, ((ui64_t)(ptrdiff_t)set << 32) ^ - ((ui64_t)time(NULL) << 12) ^ clock(), 0); + set_uniq(&set->gen, set); set->ran = 1; } -- cgit v1.2.3-55-g6feb