diff -r 924385140d98 -r c2c61fdca848 tzservices/tzloc/src/TzLocalizationDbAccessor.cpp --- a/tzservices/tzloc/src/TzLocalizationDbAccessor.cpp Tue Aug 31 15:24:25 2010 +0300 +++ b/tzservices/tzloc/src/TzLocalizationDbAccessor.cpp Wed Sep 01 12:24:48 2010 +0100 @@ -103,21 +103,29 @@ { //Database file doesn't exist. Attempt to create a new one. error = iLocalizedTimeZoneDb.Create(iDbsSession,KTzLocalizationDbName,KTzLocalizationDbSecurityPolicy); - User::LeaveIfError(error); - - //Check whether tables exist and create them if they do not - if (!IsTableCreatedL(KCZTableName)) - { - User::LeaveIfError(CreateFrequentlyUsedZoneTableL()); - } - if (!IsTableCreatedL(KUCTableName)) - { - User::LeaveIfError(CreateUserCityTableL()); - } - } + if (error == KErrNone) + { + User::LeaveIfError(CreateFrequentlyUsedZoneTableL()); + User::LeaveIfError(CreateUserCityTableL()); + } + } + User::LeaveIfError(error); + // Check if both tables are created. + CDbColSet *colSet = NULL; + TRAP(error, colSet = iLocalizedTimeZoneDb.ColSetL(KCZTableName)); + delete colSet; + if (error) + { + User::LeaveIfError(CreateFrequentlyUsedZoneTableL()); + } + TRAP(error, colSet = iLocalizedTimeZoneDb.ColSetL(KUCTableName)); + delete colSet; + if (error) + { + User::LeaveIfError(CreateUserCityTableL()); + } } - /** Destructor Closes the database tables, the database and the database session @@ -309,24 +317,3 @@ User::LeaveIfError(iZoneView.EvaluateAll()); } -TBool CTzLocalizationDbAccessor::IsTableCreatedL(const TDesC& aTableName) const - { - TBool result = EFalse; - CDbTableNames* tableNames = iLocalizedTimeZoneDb.TableNamesL(); - CleanupStack::PushL(tableNames); - if(tableNames) - { - const TInt count = tableNames->Count(); - for(TInt i = 0; i < count; i++) - { - if((*tableNames)[i] == aTableName) - { - result = ETrue; - break; - } - } - } - CleanupStack::PopAndDestroy(tableNames); - return result; - } -