--- a/persistentstorage/centralrepository/cenrepsrv/srvrepos_noc.cpp Thu Jul 08 12:09:58 2010 +0100
+++ b/persistentstorage/centralrepository/cenrepsrv/srvrepos_noc.cpp Thu Aug 12 11:53:23 2010 +0100
@@ -32,12 +32,25 @@
{
iNotifier = &aObserver;
- iRepository = TServerResources::iObserver->AccessL(aUid, aFailIfNotFound);
+ TServerResources::iObserver->iObservers.ReserveL(1);
+
+ TServerResources::iObserver->AddSharedRepositoryInfoL(aUid);
+
+ TRAPD( err, iRepository = TServerResources::iObserver->AccessL(aUid, aFailIfNotFound) );
+
//store uid
- iUid = aUid;
-
- TServerResources::iObserver->AddObserverL(aUid, this);
- TServerResources::iObserver->AddSharedRepositoryInfoL(aUid);
+ iUid = aUid;
+
+ if (err == KErrNone)
+ {
+ TRAP( err, TServerResources::iObserver->AddObserverL(aUid, this) );
+ }
+
+ if (err != KErrNone)
+ {
+ TServerResources::iObserver->RemoveSharedRepositoryInfo(aUid);
+ User::Leave(err);
+ }
}
void CServerRepository::Close()
@@ -398,6 +411,7 @@
{
if(err == KErrNoMemory)
{
+ repository->Close();
User::LeaveNoMemory();
}
else
@@ -652,21 +666,27 @@
// Create install rep for merging
CSharedRepository *installRep = 0;
- TServerResources::iObserver->LoadRepositoryLC(aUid, ETrue, installRep, CIniFileIn::EInstallOnly);
+ TRAPD( err, TServerResources::iObserver->LoadRepositoryLC(aUid, ETrue, installRep, CIniFileIn::EInstallOnly); CleanupStack::Pop(installRep) );
- // Perform merge
- iRepository->HandleUpdateMergeL(aModified, *installRep);
-
- CleanupStack::PopAndDestroy(installRep);
- Close();
+ if (err == KErrNone)
+ {
+ // Perform merge
+ TRAP( err, iRepository->HandleUpdateMergeL(aModified, *installRep) );
+ }
+ if (installRep!=NULL)
+ {
+ delete installRep;
+ }
+ Close();
+ User::LeaveIfError(err);
}
else // No ROM or persists
{
// Create install rep for persisting
OpenL(aUid, aNotifier);
-
- iRepository->CommitChangesL();
- Close();
+ TRAPD(err, iRepository->CommitChangesL());
+ Close();
+ User::LeaveIfError(err);
}
}
@@ -698,13 +718,19 @@
// Create ROM rep for merging
CSharedRepository *romRep = 0;
- TServerResources::iObserver->LoadRepositoryLC(aUid, ETrue, romRep, CIniFileIn::ERomOnly);
+ TRAPD( err, TServerResources::iObserver->LoadRepositoryLC(aUid, ETrue, romRep, CIniFileIn::ERomOnly); CleanupStack::Pop(romRep) );
- // Perform merge
- iRepository->HandleDeleteMergeL(*romRep);
-
- CleanupStack::PopAndDestroy(romRep);
+ if (err == KErrNone)
+ {
+ // Perform merge
+ TRAP( err, iRepository->HandleDeleteMergeL(*romRep) );
+ }
+ if (romRep!=NULL)
+ {
+ delete romRep;
+ }
Close();
+ User::LeaveIfError(err);
}
else // No ROM file, this is a complete uninstall
{