summaryrefslogtreecommitdiffstats
path: root/lib/libsqlite3/src/random.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libsqlite3/src/random.c')
-rw-r--r--lib/libsqlite3/src/random.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/libsqlite3/src/random.c b/lib/libsqlite3/src/random.c
index 145731051bb..a0db527f93c 100644
--- a/lib/libsqlite3/src/random.c
+++ b/lib/libsqlite3/src/random.c
@@ -53,11 +53,19 @@ void sqlite3_randomness(int N, void *pBuf){
#endif
#if SQLITE_THREADSAFE
- sqlite3_mutex *mutex = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_PRNG);
- sqlite3_mutex_enter(mutex);
+ sqlite3_mutex *mutex;
+#endif
+
+#ifndef SQLITE_OMIT_AUTOINIT
+ if( sqlite3_initialize() ) return;
#endif
- if( N<=0 ){
+#if SQLITE_THREADSAFE
+ mutex = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_PRNG);
+#endif
+
+ sqlite3_mutex_enter(mutex);
+ if( N<=0 || pBuf==0 ){
wsdPrng.isInit = 0;
sqlite3_mutex_leave(mutex);
return;