aboutsummaryrefslogtreecommitdiff
path: root/src/os.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2001-09-23 19:46:51 +0000
committerdrh <drh@noemail.net>2001-09-23 19:46:51 +0000
commit90bfcdace37be8d7029c42abb778988b2cfcc439 (patch)
tree021a8c424c5bed44d33330945c01e53a957712c1 /src/os.c
parentecdc7530dda7a793c96df4010313792de4a6390c (diff)
downloadsqlite-90bfcdace37be8d7029c42abb778988b2cfcc439.tar.gz
sqlite-90bfcdace37be8d7029c42abb778988b2cfcc439.zip
Additional test cases with locking fixes. Also, make the code thread-safe. (CVS 262)
FossilOrigin-Name: bd7d6a64afa03cc64f6537f828d6c94975bf5f02
Diffstat (limited to 'src/os.c')
-rw-r--r--src/os.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/os.c b/src/os.c
index b9d27a646..0c0f4b357 100644
--- a/src/os.c
+++ b/src/os.c
@@ -246,7 +246,7 @@ int sqliteOsTempFileName(char *zBuf){
sprintf(zBuf, "%s/sqlite_", zDir);
j = strlen(zBuf);
for(i=0; i<15; i++){
- int n = sqliteRandomByte() % sizeof(zChars);
+ int n = rand() % sizeof(zChars);
zBuf[j++] = zChars[n];
}
zBuf[j] = 0;
@@ -264,7 +264,7 @@ int sqliteOsTempFileName(char *zBuf){
sprintf(zBuf, "%s/sqlite_", zTempPath);
j = strlen(zBuf);
for(i=0; i<15; i++){
- int n = sqliteRandomByte() % sizeof(zChars);
+ int n = rand() % sizeof(zChars);
zBuf[j++] = zChars[n];
}
zBuf[j] = 0;
@@ -429,19 +429,23 @@ int sqliteOsUnlock(OsFile id){
** Get information to seed the random number generator.
*/
int sqliteOsRandomSeed(char *zBuf){
+ static int once = 1;
#if OS_UNIX
int pid;
time((time_t*)zBuf);
- zBuf += sizeof(time_t);
pid = getpid();
- memcpy(zBuf, &pid, sizeof(pid));
- zBuf += pid;
- return SQLITE_OK;
+ memcpy(&zBuf[sizeof(time_t)], &pid, sizeof(pid));
#endif
#if OS_WIN
GetSystemTime((LPSYSTEMTIME)zBuf);
+#endif
+ if( once ){
+ int seed;
+ memcpy(&seed, zBuf, sizeof(seed));
+ srand(seed);
+ once = 0;
+ }
return SQLITE_OK;
-#endif
}
/*