summaryrefslogtreecommitdiff
path: root/plugins/Dbx_mdb/src/dbmodulechain.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/Dbx_mdb/src/dbmodulechain.cpp')
-rw-r--r--plugins/Dbx_mdb/src/dbmodulechain.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/plugins/Dbx_mdb/src/dbmodulechain.cpp b/plugins/Dbx_mdb/src/dbmodulechain.cpp
index 4643a2d295..a54d7ab2f9 100644
--- a/plugins/Dbx_mdb/src/dbmodulechain.cpp
+++ b/plugins/Dbx_mdb/src/dbmodulechain.cpp
@@ -103,10 +103,13 @@ DWORD CDbxMdb::GetModuleNameOfs(const char *szName)
MDB_val key = { sizeof(int), &newIdx }, data = { sizeof(DBModuleName) + nameLen, pmod };
- txn_lock trnlck(m_pMdbEnv);
- mdb_open(trnlck, "modules", MDB_INTEGERKEY, &m_dbModules);
- mdb_put(trnlck, m_dbModules, &key, &data, 0);
- trnlck.commit();
+ for (;; Remap()) {
+ txn_lock trnlck(m_pMdbEnv);
+ mdb_open(trnlck, "modules", MDB_INTEGERKEY, &m_dbModules);
+ mdb_put(trnlck, m_dbModules, &key, &data, 0);
+ if (trnlck.commit())
+ break;
+ }
// add to cache
char *mod = (char*)HeapAlloc(m_hModHeap, 0, nameLen + 1);