diff options
author | Wez Furlong <wez@php.net> | 2004-07-10 12:27:51 +0000 |
---|---|---|
committer | Wez Furlong <wez@php.net> | 2004-07-10 12:27:51 +0000 |
commit | e563b4eafa63ba8beb88defa1e36f037a7a97a60 (patch) | |
tree | 2e72dfa1c4b7fe62fde9ab326a67047ba2f4cc9e /ext/sqlite/libsqlite/src/random.c | |
parent | cd732f1a3f5df97407797fe7ebb97830552479ad (diff) | |
download | php-git-e563b4eafa63ba8beb88defa1e36f037a7a97a60.tar.gz |
Upgrade bundled library to 2.8.14 + misc fixes
(http://www.sqlite.org/cvstrac/chngview?cn=1742)
Diffstat (limited to 'ext/sqlite/libsqlite/src/random.c')
-rw-r--r-- | ext/sqlite/libsqlite/src/random.c | 44 |
1 files changed, 14 insertions, 30 deletions
diff --git a/ext/sqlite/libsqlite/src/random.c b/ext/sqlite/libsqlite/src/random.c index d18bebff6b..dd8bdd4c58 100644 --- a/ext/sqlite/libsqlite/src/random.c +++ b/ext/sqlite/libsqlite/src/random.c @@ -35,15 +35,15 @@ ** on RC4, which we know works very well. */ static int randomByte(){ - int t; + unsigned char t; /* All threads share a single random number generator. ** This structure is the current state of the generator. */ static struct { - int isInit; /* True if initialized */ - int i, j; /* State variables */ - int s[256]; /* State variables */ + unsigned char isInit; /* True if initialized */ + unsigned char i, j; /* State variables */ + unsigned char s[256]; /* State variables */ } prng; /* Initialize the state of the random number generator once, @@ -65,8 +65,7 @@ static int randomByte(){ prng.s[i] = i; } for(i=0; i<256; i++){ - int t; - prng.j = (prng.j + prng.s[i] + k[i]) & 0xff; + prng.j += prng.s[i] + k[i]; t = prng.s[prng.j]; prng.s[prng.j] = prng.s[i]; prng.s[i] = t; @@ -76,38 +75,23 @@ static int randomByte(){ /* Generate and return single random byte */ - prng.i = (prng.i + 1) & 0xff; - prng.j = (prng.j + prng.s[prng.i]) & 0xff; + prng.i++; t = prng.s[prng.i]; + prng.j += t; prng.s[prng.i] = prng.s[prng.j]; prng.s[prng.j] = t; - t = prng.s[prng.i] + prng.s[prng.j]; - return prng.s[t & 0xff]; + t += prng.s[prng.i]; + return prng.s[t]; } /* -** Return an random 8-bit integer. +** Return N random bytes. */ -int sqliteRandomByte(){ - int r; +void sqliteRandomness(int N, void *pBuf){ + unsigned char *zBuf = pBuf; sqliteOsEnterMutex(); - r = randomByte(); - sqliteOsLeaveMutex(); - return r; -} - -/* -** Return a random 32-bit integer. The integer is generated by making -** 4 calls to sqliteRandomByte(). -*/ -int sqliteRandomInteger(){ - int r; - int i; - sqliteOsEnterMutex(); - r = randomByte(); - for(i=1; i<4; i++){ - r = (r<<8) + randomByte(); + while( N-- ){ + *(zBuf++) = randomByte(); } sqliteOsLeaveMutex(); - return r; } |