diff -r 415c00f1675d -r 8ee66fcd0a7c policymanagement/policyengine/centreptoolserver/src/RepositorySession.cpp --- a/policymanagement/policyengine/centreptoolserver/src/RepositorySession.cpp Fri Sep 17 08:34:58 2010 +0300 +++ b/policymanagement/policyengine/centreptoolserver/src/RepositorySession.cpp Mon Oct 04 01:40:31 2010 +0300 @@ -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 ); + } + + } + } }