summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAli Akhtarzada <ali.akhtarzada@nokia.com>2012-06-01 10:56:26 +0200
committerQt by Nokia <qt-info@nokia.com>2012-06-13 01:51:45 +0200
commitb85bf84c87c363e79030bdd819b016fee8aa04a6 (patch)
treefec1884a09df7d8306ea1fb9514ae864414d83b7 /src
parent470174481800efd604f8760bd06e84284892f5b8 (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.cpp11
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;