summary refs log tree commit diff
path: root/src/Cache.cpp
diff options
context:
space:
mode:
authormips64-el <mips64-el@users.noreply.github.com>2023-10-25 01:30:50 +0200
committermips64-el <mips64-el@users.noreply.github.com>2023-10-25 01:30:50 +0200
commitcaba669e8834627f5547fc901566e28d8de8c0b7 (patch)
tree0174b933825ce4b89b98b93d4b94ed08f00a6e1c /src/Cache.cpp
parentprevent overscroll in roomlist and communities list (diff)
downloadnheko-caba669e8834627f5547fc901566e28d8de8c0b7.tar.xz
Fix double free on commit database migration
Diffstat (limited to '')
-rw-r--r--src/Cache.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/Cache.cpp b/src/Cache.cpp
index 8ad850ac..bfe27c30 100644
--- a/src/Cache.cpp
+++ b/src/Cache.cpp
@@ -1727,12 +1727,14 @@ Cache::runMigrations()
                auto txn     = lmdb::txn::begin(env_, nullptr);
                auto mainDb  = lmdb::dbi::open(txn);
                auto dbNames = lmdb::cursor::open(txn, mainDb);
+               bool doCommit = false;
 
                std::string_view dbName;
                while (dbNames.get(dbName, MDB_NEXT)) {
                    if (!dbName.starts_with("olm_sessions.v2/"))
                        continue;
 
+                   doCommit = true;
                    auto curveKey = dbName;
                    curveKey.remove_prefix(std::string_view("olm_sessions.v2/").size());
 
@@ -1750,7 +1752,7 @@ Cache::runMigrations()
                    oldDb.drop(txn, true);
                }
 
-               txn.commit();
+               if (doCommit) txn.commit();
            } catch (const lmdb::error &e) {
                nhlog::db()->critical("Failed to convert olm sessions database in migration! {}",
                                      e.what());