diff -r bd874ee5e5e2 -r 502e5d91ad42 homescreenpluginsrv/hspsresource/src/hspsresource.cpp --- a/homescreenpluginsrv/hspsresource/src/hspsresource.cpp Fri Mar 12 15:43:54 2010 +0200 +++ b/homescreenpluginsrv/hspsresource/src/hspsresource.cpp Mon Mar 15 12:41:53 2010 +0200 @@ -63,16 +63,20 @@ EXPORT_C ChspsResource* ChspsResource::CloneL() { ChspsResource* clone = ChspsResource::NewL(); + CleanupStack::PushL( clone ); + clone->SetLockingPolicy( iLockingPolicy ); clone->SetResourceType( iResourceType ); - clone->SetLanguage( iLanguage ); - clone->SetResourceIdL( *iResourceID ); - clone->SetFileNameL( *iFileName ); + clone->SetLanguage( iLanguage ); + clone->SetResourceIdL( ResourceId() ); + clone->SetFileNameL( FileName() ); clone->SetMimeTypeL( iMimeType ); clone->SetConfigurationUid( iConfigurationUid ); + clone->SetTagsL( Tags() ); CleanupStack::Pop( clone ); + return clone; } @@ -95,37 +99,30 @@ aStream.WriteUint32L( iLockingPolicy ); aStream.WriteUint32L( iResourceType ); aStream.WriteUint32L( iLanguage ); - - if ( iResourceID ) + + const TDesC& resourceId = ResourceId(); + aStream.WriteInt32L( resourceId.Length() ); + if ( resourceId.Length() > 0 ) { - aStream << *iResourceID; - } - else - { - aStream << KNullDesC; + aStream << resourceId; } - if ( iFileName ) + const TDesC& fileName = FileName(); + aStream.WriteInt32L( fileName.Length() ); + if ( fileName.Length() > 0 ) { - aStream << *iFileName; - } - else - { - aStream << KNullDesC; - } - + aStream << fileName; + } iMimeType.ExternalizeL(aStream); aStream.WriteUint32L( iConfigurationUid ); - if ( iTags ) + const TDesC& tags = Tags(); + aStream.WriteInt32L( tags.Length() ); + if ( tags.Length() > 0 ) { - aStream << *iTags; - } - else - { - aStream << KNullDesC; + aStream << tags; } } @@ -141,12 +138,20 @@ iLanguage = (TLanguage)aStream.ReadUint32L(); delete iResourceID; - iResourceID = NULL; - iResourceID = HBufC::NewL(aStream, KMaxFileName ); + iResourceID = NULL; + TInt len = aStream.ReadInt32L(); + if( len > 0 ) + { + iResourceID = HBufC::NewL( aStream, len ); + } delete iFileName; iFileName = NULL; - iFileName = HBufC::NewL(aStream, KMaxFileName ); + len = aStream.ReadInt32L(); + if( len > 0 ) + { + iFileName = HBufC::NewL( aStream, len ); + } iMimeType.InternalizeL(aStream); @@ -154,7 +159,11 @@ delete iTags; iTags = NULL; - iTags = HBufC::NewL(aStream, KMaxTagsLength ); + len = aStream.ReadInt32L(); + if( len > 0 ) + { + iTags = HBufC::NewL( aStream, len ); + } } // ----------------------------------------------------------------------------- @@ -205,9 +214,16 @@ // EXPORT_C void ChspsResource::SetResourceIdL( const TDesC& aResourceId ) { - delete iResourceID; - iResourceID = NULL; - iResourceID = aResourceId.AllocL(); + if( iResourceID ) + { + delete iResourceID; + iResourceID = NULL; + } + + if( aResourceId.Length() > 0 ) + { + iResourceID = aResourceId.AllocL(); + } } // ----------------------------------------------------------------------------- @@ -234,9 +250,16 @@ // EXPORT_C void ChspsResource::SetFileNameL( const TDesC& aFileName ) { - delete iFileName; - iFileName = NULL; - iFileName = aFileName.AllocL(); + if( iFileName ) + { + delete iFileName; + iFileName = NULL; + } + + if( aFileName.Length() > 0 ) + { + iFileName = aFileName.AllocL(); + } } // ----------------------------------------------------------------------------- @@ -254,8 +277,7 @@ { return KNullDesC; } - } - + } // ----------------------------------------------------------------------------- // ChspsResource::SetMimeTypeL(). @@ -322,9 +344,16 @@ // EXPORT_C void ChspsResource::SetTagsL( const TDesC& aTag ) { - delete iTags; - iTags = NULL; - iTags = aTag.AllocL(); + if( iTags ) + { + delete iTags; + iTags = NULL; + } + + if( aTag.Length() > 0 ) + { + iTags = aTag.AllocL(); + } } // -----------------------------------------------------------------------------