diff options
author | Ali Akhtarzada <ali.akhtarzada@nokia.com> | 2012-06-01 10:56:26 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-06-13 01:51:45 +0200 |
commit | b85bf84c87c363e79030bdd819b016fee8aa04a6 (patch) | |
tree | fec1884a09df7d8306ea1fb9514ae864414d83b7 /src | |
parent | 470174481800efd604f8760bd06e84284892f5b8 (diff) |
Make sure invalid partition function calls work propertly
Make sure the return values are what is expected and that
there is no seg faulting
Change-Id: I344835bca44ba0277813ae2465b79f286fd11f37
Reviewed-by: Denis Dzyubenko <denis.dzyubenko@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/partition/jsondbpartition.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/partition/jsondbpartition.cpp b/src/partition/jsondbpartition.cpp index 170873a..173e4c0 100644 --- a/src/partition/jsondbpartition.cpp +++ b/src/partition/jsondbpartition.cpp @@ -568,7 +568,7 @@ bool JsonDbPartition::clear() { Q_D(JsonDbPartition); - if (d->mObjectTable->bdb()) { + if (d->mObjectTable && d->mObjectTable->bdb() && d->mObjectTable->bdb()->isOpen()) { qCritical() << JSONDB_ERROR << "cannot clear database while it is open."; return false; } @@ -746,10 +746,13 @@ bool JsonDbPartitionPrivate::abortTransaction() int JsonDbPartition::flush(bool *ok) { Q_D(JsonDbPartition); + if (ok) + *ok = false; if (d->mIsOpen) { - *ok = d->mObjectTable->sync(JsonDbObjectTable::SyncObjectTable); - - if (*ok) + bool result = d->mObjectTable->sync(JsonDbObjectTable::SyncObjectTable); + if (ok) + *ok = result; + if (result) return static_cast<int>(d->mObjectTable->stateNumber()); } return -1; |