--- a/cmmanager/cmmgr/Framework/Src/cmdestinationimpl.cpp Thu Dec 17 08:55:21 2009 +0200
+++ b/cmmanager/cmmgr/Framework/Src/cmdestinationimpl.cpp Thu Jan 07 12:56:54 2010 +0200
@@ -2584,6 +2584,12 @@
case ESnapMetadataDestinationIsLocalised:
{
+ // Check that aValue is within valid range.
+ if ( aValue > ELocalisedDestIntranet )
+ {
+ User::Leave( KErrArgument );
+ }
+
TUint32 oldVal = TUint32(iData->iMetaDataRec->iMetadata) &
ESnapMetadataInternet;
if ( aValue != ENotLocalisedDest )
@@ -2638,10 +2644,26 @@
case ESnapMetadataPurpose:
{
+ // Check that aValue is within valid range.
+ if ( aValue > ESnapPurposeIntranet )
+ {
+ User::Leave( KErrArgument );
+ }
+
+ // Check if destination with the given purpose already
+ // exists
+ CheckIfPurposeExistL( aValue );
+
// ESnapPurposeInternet and ESnapPurposeMMS need special
// handling
switch( aValue )
{
+ case ESnapPurposeUnknown:
+ {
+ // This also clears ESnapMetadataInternet
+ SetMetadataL( ESnapMetadataDestinationIsLocalised, ENotLocalisedDest );
+ break;
+ }
case ESnapPurposeInternet:
{
// This sets ESnapMetadataInternet and
@@ -2659,7 +2681,8 @@
{
SetMetadataL( ESnapMetadataDestinationIsLocalised,
ELocalisedDestMMS );
- SetMetadataL( ESnapMetadataHiddenAgent, 1 );
+ iData->iMetaDataRec->iMetadata =
+ ESnapMetadataHiddenAgent | iData->iMetaDataRec->iMetadata;
}
break;
case ESnapPurposeIntranet:
@@ -2672,10 +2695,6 @@
break;
}
- // Check if destination with the given purpose already
- // exists
- CheckIfPurposeExistL( aValue );
-
TUint32 value = aValue << 8;
// reset the purpose bit
iData->iMetaDataRec->iMetadata = ~ESnapMetadataPurpose & iData->iMetaDataRec->iMetadata;
@@ -2701,11 +2720,14 @@
case ESnapMetadataHiddenAgent:
{
+ TUint32 internet = iData->iMetaDataRec->iMetadata & ESnapMetadataInternet;
+ TUint32 internetLocal = ( iData->iMetaDataRec->iMetadata & ESnapMetadataDestinationIsLocalised ) >> 4;
+ TUint32 internetPurpose = ( iData->iMetaDataRec->iMetadata & ESnapMetadataPurpose ) >> 8;
if( aValue )
{
- if ( iData->iMetaDataRec->iMetadata & ESnapMetadataInternet
- || ( ( iData->iMetaDataRec->iMetadata >> 4 ) & ELocalisedDestInternet )
- || ( ( iData->iMetaDataRec->iMetadata >> 8 ) & ESnapPurposeInternet ) )
+ if ( internet
+ || ( internetLocal == ELocalisedDestInternet )
+ || ( internetPurpose == ESnapPurposeInternet ) )
{
User::Leave( KErrArgument );
}