Fix sqlite3_config call only once before using any other sqlite utilities
This commit is contained in:
parent
0b709a05b7
commit
34e18533cf
@ -95,10 +95,9 @@ static void sqlite_unlock(int write)
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
static int sqlite_init_multithreaded(void) {
|
||||
static int _sqlite_init_multithreaded(void) {
|
||||
|
||||
#if defined(SQLITE_CONFIG_MULTITHREAD)
|
||||
|
||||
if (sqlite3_threadsafe() > 0) {
|
||||
int retCode = sqlite3_config(SQLITE_CONFIG_MULTITHREAD);
|
||||
if (retCode != SQLITE_OK) {
|
||||
@ -117,6 +116,10 @@ static int sqlite_init_multithreaded(void) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void sqlite_init_multithreaded(void) {
|
||||
(void) _sqlite_init_multithreaded();
|
||||
}
|
||||
|
||||
static int donot_print_connection_success = 0;
|
||||
|
||||
static void fix_user_directory(char *dir0) {
|
||||
@ -172,6 +175,8 @@ static void init_sqlite_database(sqlite3 *sqliteconnection) {
|
||||
}
|
||||
}
|
||||
|
||||
pthread_once_t sqlite_init_once = PTHREAD_ONCE_INIT;
|
||||
|
||||
static sqlite3 * get_sqlite_connection(void) {
|
||||
|
||||
persistent_users_db_t *pud = get_persistent_users_db();
|
||||
@ -179,7 +184,7 @@ static sqlite3 * get_sqlite_connection(void) {
|
||||
sqlite3 *sqliteconnection = (sqlite3 *)pthread_getspecific(connection_key);
|
||||
if(!sqliteconnection) {
|
||||
fix_user_directory(pud->userdb);
|
||||
sqlite_init_multithreaded();
|
||||
(void) pthread_once(&sqlite_init_once, sqlite_init_multithreaded);
|
||||
int rc = sqlite3_open(pud->userdb, &sqliteconnection);
|
||||
if(!sqliteconnection || (rc != SQLITE_OK)) {
|
||||
const char* errmsg = sqlite3_errmsg(sqliteconnection);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user