diff options
Diffstat (limited to 'common/storage_lmdb.cpp')
-rw-r--r-- | common/storage_lmdb.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/common/storage_lmdb.cpp b/common/storage_lmdb.cpp index 6539eb0..1efffc4 100644 --- a/common/storage_lmdb.cpp +++ b/common/storage_lmdb.cpp | |||
@@ -156,8 +156,8 @@ void Storage::NamedDatabase::remove(const QByteArray &k, const QByteArray &value | |||
156 | const std::function<void(const Storage::Error &error)> &errorHandler) | 156 | const std::function<void(const Storage::Error &error)> &errorHandler) |
157 | { | 157 | { |
158 | if (!d || !d->transaction) { | 158 | if (!d || !d->transaction) { |
159 | Error error(d->name.toLatin1() + d->db, ErrorCodes::GenericError, "Not open"); | ||
160 | if (d) { | 159 | if (d) { |
160 | Error error(d->name.toLatin1() + d->db, ErrorCodes::GenericError, "Not open"); | ||
161 | errorHandler ? errorHandler(error) : d->defaultErrorHandler(error); | 161 | errorHandler ? errorHandler(error) : d->defaultErrorHandler(error); |
162 | } | 162 | } |
163 | return; | 163 | return; |
@@ -443,8 +443,8 @@ Storage::NamedDatabase Storage::Transaction::openDatabase(const QByteArray &db, | |||
443 | d->implicitCommit = true; | 443 | d->implicitCommit = true; |
444 | auto p = new Storage::NamedDatabase::Private(db, allowDuplicates, d->defaultErrorHandler, d->name, d->transaction); | 444 | auto p = new Storage::NamedDatabase::Private(db, allowDuplicates, d->defaultErrorHandler, d->name, d->transaction); |
445 | if (!p->openDatabase(d->requestedRead, errorHandler)) { | 445 | if (!p->openDatabase(d->requestedRead, errorHandler)) { |
446 | return Storage::NamedDatabase(); | ||
447 | delete p; | 446 | delete p; |
447 | return Storage::NamedDatabase(); | ||
448 | } | 448 | } |
449 | return Storage::NamedDatabase(p); | 449 | return Storage::NamedDatabase(p); |
450 | } | 450 | } |
@@ -463,7 +463,7 @@ QList<QByteArray> Storage::Transaction::getDatabaseNames() const | |||
463 | MDB_val data; | 463 | MDB_val data; |
464 | MDB_cursor *cursor; | 464 | MDB_cursor *cursor; |
465 | 465 | ||
466 | rc = mdb_cursor_open(d->transaction, d->dbi, &cursor); | 466 | mdb_cursor_open(d->transaction, d->dbi, &cursor); |
467 | if ((rc = mdb_cursor_get(cursor, &key, &data, MDB_FIRST)) == 0) { | 467 | if ((rc = mdb_cursor_get(cursor, &key, &data, MDB_FIRST)) == 0) { |
468 | list << QByteArray::fromRawData((char*)key.mv_data, key.mv_size); | 468 | list << QByteArray::fromRawData((char*)key.mv_data, key.mv_size); |
469 | while ((rc = mdb_cursor_get(cursor, &key, &data, MDB_NEXT)) == 0) { | 469 | while ((rc = mdb_cursor_get(cursor, &key, &data, MDB_NEXT)) == 0) { |
@@ -615,4 +615,12 @@ void Storage::removeFromDisk() const | |||
615 | mdb_env_close(env); | 615 | mdb_env_close(env); |
616 | } | 616 | } |
617 | 617 | ||
618 | void Storage::clearEnv() | ||
619 | { | ||
620 | for (auto env : Storage::Private::sEnvironments) { | ||
621 | mdb_env_close(env); | ||
622 | } | ||
623 | Storage::Private::sEnvironments.clear(); | ||
624 | } | ||
625 | |||
618 | } // namespace Sink | 626 | } // namespace Sink |