Commit 40d0519 for zlib
commit 40d05192c770090d3ed267cc9ee9a155ef8ec1d4
Author: Mark Adler <git@madler.net>
Date: Mon Feb 16 21:44:25 2026 -0800
Factor out a set_uniq() function to set the seed with noise.
In preparation for using this in lieu of rand() for crypt.h.
diff --git a/contrib/minizip/skipset.h b/contrib/minizip/skipset.h
index beb6788..9bef185 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;
}