From 0d3b1e2959bdf303c9e60bc9d3940e51e5e3e1d1 Mon Sep 17 00:00:00 2001 From: MikalaiR Date: Sat, 7 May 2016 15:38:25 +0000 Subject: dbx_lmdb: optimization git-svn-id: http://svn.miranda-ng.org/main/trunk@16813 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Dbx_mdb/src/dbintf.cpp | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) (limited to 'plugins/Dbx_mdb/src/dbintf.cpp') diff --git a/plugins/Dbx_mdb/src/dbintf.cpp b/plugins/Dbx_mdb/src/dbintf.cpp index a9c798d2a4..353fc0cd5a 100644 --- a/plugins/Dbx_mdb/src/dbintf.cpp +++ b/plugins/Dbx_mdb/src/dbintf.cpp @@ -81,7 +81,7 @@ CDbxMdb::~CDbxMdb() int CDbxMdb::Load(bool bSkipInit) { - if (!Map()) + if (Map() != MDB_SUCCESS) return EGROKPRF_CANTREAD; if (!bSkipInit) { @@ -144,8 +144,8 @@ int CDbxMdb::Load(bool bSkipInit) } - if (InitModuleNames()) return EGROKPRF_CANTREAD; - if (InitCrypt()) return EGROKPRF_CANTREAD; + if (InitModuleNames()) return EGROKPRF_DAMAGED; + if (InitCrypt()) return EGROKPRF_DAMAGED; // everything is ok, go on if (!m_bReadOnly) { @@ -171,7 +171,7 @@ int CDbxMdb::Load(bool bSkipInit) int CDbxMdb::Create(void) { m_dwFileSize = 0; - return (Map()) ? 0 : EGROKPRF_CANTREAD; + return (Map() == MDB_SUCCESS) ? 0 : EGROKPRF_CANTREAD; } int CDbxMdb::Check(void) @@ -182,7 +182,7 @@ int CDbxMdb::Check(void) LARGE_INTEGER iFileSize; GetFileSizeEx(hFile, &iFileSize); - m_dwFileSize = (iFileSize.LowPart & 0xFFFFF000); + m_dwFileSize = iFileSize.LowPart; DWORD dummy = 0; char buf[32]; @@ -207,17 +207,15 @@ STDMETHODIMP_(void) CDbxMdb::SetCacheSafetyMode(BOOL bIsSet) m_safetyMode = bIsSet != 0; } -bool CDbxMdb::Map() +int CDbxMdb::Map() { m_dwFileSize += 0x100000; mdb_env_set_mapsize(m_pMdbEnv, m_dwFileSize); - unsigned int mode = MDB_NOSYNC | MDB_NOSUBDIR | MDB_NOLOCK; -// if (m_bReadOnly) -// mode |= MDB_RDONLY; -// else - mode |= MDB_WRITEMAP; - return mdb_env_open(m_pMdbEnv, _T2A(m_tszProfileName), mode, 0664) == MDB_SUCCESS; + unsigned int mode = MDB_NOSYNC | MDB_NOSUBDIR | MDB_NOLOCK | MDB_NOTLS | MDB_WRITEMAP; + if (m_bReadOnly) + mode |= MDB_RDONLY; + return mdb_env_open(m_pMdbEnv, _T2A(m_tszProfileName), mode, 0664); } bool CDbxMdb::Remap() -- cgit v1.2.3