X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb/blobdiff_plain/81ceb2c35de440e701d2f4e6960001395d2b7e97..HEAD:/rand/rand.c diff --git a/rand/rand.c b/rand/rand.c index 90e81930..665152ac 100644 --- a/rand/rand.c +++ b/rand/rand.c @@ -413,7 +413,7 @@ void rand_get(rand_pool *r, void *p, size_t sz) if (!sz) return; for (;;) { - if (r->o + sz <= RAND_BUFSZ) { + if (sz <= RAND_BUFSZ - r->o) { memcpy(o, r->buf + r->o, sz); r->o += sz; break; @@ -428,8 +428,8 @@ void rand_get(rand_pool *r, void *p, size_t sz) } } - if (r->obits > sz * 8) - r->obits -= sz * 8; + if (r->obits > 8*sz) + r->obits -= 8*sz; else r->obits = 0; } @@ -467,15 +467,15 @@ void rand_getgood(rand_pool *r, void *p, size_t sz) while (sz) { size_t chunk = sz; - if (chunk * 8 > r->obits) { - if (chunk * 8 > r->ibits + r->obits) + if (8*chunk > r->obits) { + if (8*chunk > r->ibits + r->obits) do r->s->getnoise(r); while (r->ibits + r->obits < 256); rand_gate(r); - if (chunk * 8 > r->obits) - chunk = r->obits / 8; + if (8*chunk > r->obits) + chunk = r->obits/8; } - if (chunk + r->o <= RAND_BUFSZ) { + if (chunk <= RAND_BUFSZ - r->o) { memcpy(o, r->buf + r->o, chunk); r->o += chunk; } else { @@ -484,7 +484,7 @@ void rand_getgood(rand_pool *r, void *p, size_t sz) rand_stretch(r); } - r->obits -= chunk * 8; + r->obits -= 8*chunk; o += chunk; sz -= chunk; }