--- a/landmarks/locationlandmarks/localaccess/src/EPos_CPosLmLocalDatabase.cpp Tue Feb 02 10:12:24 2010 +0200
+++ b/landmarks/locationlandmarks/localaccess/src/EPos_CPosLmLocalDatabase.cpp Fri Apr 16 15:23:31 2010 +0300
@@ -321,6 +321,7 @@
//
EXPORT_C void CPosLmLocalDatabase::CommitServerTransactionLX()
{
+ //coverity[naming_error : FALSE]
CommitServerTransactionL();
CleanupStack::Pop(); // rollback
}
@@ -716,17 +717,28 @@
TInt err = iDbAccess->OpenDatabaseL(*iDbUri);
if (err != KErrNone)
{
- // Re-create database if below error codes
- if (err == KErrCorrupt || err == KErrNotSupported)
+ // As this is a default landmarks db, all errors other than OutOfMemory
+ // should be handled by replacing a corrupt db or creating a new db if one is missing.
+ if (err == KErrNoMemory)
{
- iSubSession->CreateDefaultDbL(*iDbUri, ETrue);
+ User::Leave(err);
}
else
{
- iSubSession->CreateDefaultDbL(*iDbUri, EFalse);
+ if ((err == KErrNotFound) || (err == KErrPathNotFound)
+ || (err == KErrArgument) || (err == KErrAlreadyExists))
+ {
+ // Create a new database [default landmarks db]
+ iSubSession->CreateDefaultDbL(*iDbUri, EFalse);
+ }
+ else
+ {
+ // Try deleting the corrupted database and then create a new one
+ iSubSession->CreateDefaultDbL(*iDbUri, ETrue);
+ }
+ *DatabaseAccess()->InitFlagPtr() = ECreated;
+ User::LeaveIfError(iDbAccess->OpenDatabaseL(*iDbUri));
}
- *DatabaseAccess()->InitFlagPtr() = ECreated;
- User::LeaveIfError(iDbAccess->OpenDatabaseL(*iDbUri));
}
}
CleanupStack::PopAndDestroy(); // DbLock