about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/prng/random.c14
1 files changed, 2 insertions, 12 deletions
diff --git a/src/prng/random.c b/src/prng/random.c
index 4ad62058..e250e28e 100644
--- a/src/prng/random.c
+++ b/src/prng/random.c
@@ -1,10 +1,3 @@
-/*
- * random.c - Copyright © 2011 Szabolcs Nagy
- * Permission to use, copy, modify, and/or distribute this code
- * for any purpose with or without fee is hereby granted.
- * There is no warranty.
-*/
-
 #include <stdlib.h>
 #include <stdint.h>
 #include "libc.h"
@@ -12,11 +5,7 @@
 /*
 this code uses the same lagged fibonacci generator as the
 original bsd random implementation except for the seeding
-
-different seeds produce different sequences with long period
-(other libcs seed the state with a park-miller generator
-when seed=0 some fail to produce good random sequence
-others produce the same sequence as another seed)
+which was broken in the original
 */
 
 static uint32_t init[] = {
@@ -98,6 +87,7 @@ char *initstate(unsigned seed, char *state, size_t size) {
 		n = 63;
 	x = (uint32_t*)state + 1;
 	__srandom(seed);
+	savestate();
 	UNLOCK(lock);
 	return old;
 }