database: flip to recursive_mutex to allow nested locks (#1937)
* Fix crash from db locking * Change db lock to use recursive_mutex
This commit is contained in:
parent
5ba9816377
commit
c5087d7a39
@ -70,7 +70,7 @@ public:
|
||||
const DatabaseInfo &GetInfo();
|
||||
private:
|
||||
MYSQL *m_mysql;
|
||||
std::mutex m_FullLock;
|
||||
std::recursive_mutex m_FullLock;
|
||||
|
||||
/* ---------- */
|
||||
DatabaseInfo m_Info;
|
||||
|
@ -71,7 +71,7 @@ public:
|
||||
void SetLastIDAndRows(unsigned int insertID, unsigned int affectedRows);
|
||||
private:
|
||||
PGconn *m_pgsql;
|
||||
std::mutex m_FullLock;
|
||||
std::recursive_mutex m_FullLock;
|
||||
|
||||
unsigned int m_lastInsertID;
|
||||
unsigned int m_lastAffectedRows;
|
||||
|
@ -70,7 +70,7 @@ public:
|
||||
}
|
||||
private:
|
||||
sqlite3 *m_sq3;
|
||||
std::mutex m_FullLock;
|
||||
std::recursive_mutex m_FullLock;
|
||||
bool m_Persistent;
|
||||
String m_LastError;
|
||||
int m_LastErrorCode;
|
||||
|
@ -959,6 +959,10 @@ native bool SQL_Execute(Handle statement);
|
||||
* If the lock cannot be acquired, the main thread will pause until the
|
||||
* threaded operation has concluded.
|
||||
*
|
||||
* Care should be taken to not lock an already-locked database. Internally,
|
||||
* lock calls are nested recursively and must be paired with an equal amount
|
||||
* of unlocks to be undone. This behaviour should not be relied on.
|
||||
*
|
||||
* @param database A database Handle.
|
||||
* @error Invalid database Handle.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user