diff -r 910464db1b65 -r 08c8318ec9cb policymanagement/policyengine/centreptoolserver/src/RepositorySession.cpp --- a/policymanagement/policyengine/centreptoolserver/src/RepositorySession.cpp Fri Sep 03 22:35:56 2010 +0530 +++ b/policymanagement/policyengine/centreptoolserver/src/RepositorySession.cpp Fri Sep 17 19:59:15 2010 +0530 @@ -423,8 +423,27 @@ if ( !aSettings.Count() ) { CRangeMeta * setting = CRangeMeta::NewL( aCompareValue, 0, aMask, KBackupBitMask); - aSettings.AppendL( setting ); - iRangeMetas.AppendL( setting); + TInt err = KErrNone; + TRAP(err, aSettings.AppendL( setting )); + if(err != KErrNone) + { + delete setting; + User::Leave( err ); + } + else + { + TRAP(err, iRangeMetas.AppendL( setting)); + if(err != KErrNone) + { + TInt indx = aSettings.Find( setting ); + if(indx != KErrNotFound) + { + aSettings.Remove(indx); + User::Leave( err ); + } + + } + } } } @@ -533,8 +552,27 @@ if ( !aSettings.Count() ) { CRangeSetting * setting = CRangeSetting::NewL( aRangeStart, aRangeEnd, 0); - aSettings.Append( setting ); - iRangeSettings.Append( setting); + TInt err = KErrNone; + TRAP(err, aSettings.AppendL( setting )); + if(err != KErrNone) + { + delete setting; + User::Leave( err ); + } + else + { + TRAP(err, iRangeSettings.AppendL( setting)); + if(err != KErrNone) + { + TInt indx = aSettings.Find( setting ); + if(indx != KErrNotFound) + { + aSettings.Remove(indx); + User::Leave( err ); + } + + } + } } iRangeSettings.Sort( linearOrder); @@ -572,8 +610,27 @@ if ( !aSettings.Count() ) { CRangeSetting * setting = CRangeSetting::NewL( aCompareValue, 0, aMask); - aSettings.Append( setting ); - iRangeSettings.Append( setting); + TInt err = KErrNone; + TRAP(err, aSettings.AppendL( setting )); + if(err != KErrNone) + { + delete setting; + User::Leave( err ); + } + else + { + TRAP(err, iRangeSettings.AppendL( setting)); + if(err != KErrNone) + { + TInt indx = aSettings.Find( setting ); + if(indx != KErrNotFound) + { + aSettings.Remove(indx); + User::Leave( err ); + } + + } + } }