progs/perftest.c: Use from Glibc syscall numbers.
[catacomb] / rand / rand.c
index 90e8193..665152a 100644 (file)
@@ -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;
   }