diff -r 6b8f3b30d0ec -r efd4f1afd43e ipsservices/ipssosplugin/src/ipsplgmsgkey.cpp --- a/ipsservices/ipssosplugin/src/ipsplgmsgkey.cpp Wed Jun 09 09:22:57 2010 +0300 +++ b/ipsservices/ipssosplugin/src/ipsplgmsgkey.cpp Mon Jun 21 15:20:54 2010 +0300 @@ -100,10 +100,8 @@ } case EFSMailSortBySubject: { - // due to changes in CompareSubject method - TRAP_IGNORE( result = CompareSubjectsL( - leftEntry.iDescription, rightEntry.iDescription ) ); - // + result = CompareSubjects( leftEntry.iDescription, + rightEntry.iDescription ); break; } case EFSMailSortByPriority: @@ -208,38 +206,37 @@ // Strips the subject prefixes before comparing the strings // --------------------------------------------------------------------------- -TInt TIpsPlgMsgKey::CompareSubjectsL( +TInt TIpsPlgMsgKey::CompareSubjects( const TDesC& aLeft, const TDesC& aRight ) const { FUNC_LOG; TInt result( KEqual ); - TPtrC leftPtr( aLeft ); - TPtrC rightPtr( aRight ); - TInt leftOffset( FindSubjectStart( aLeft ) ); - TInt rightOffset( FindSubjectStart( aRight ) ); - - leftPtr.Set( - leftPtr.Ptr() + leftOffset, leftPtr.Length() - leftOffset ); - rightPtr.Set( - rightPtr.Ptr() + rightOffset, rightPtr.Length() - rightOffset ); - - // for unifying with UI - remove all white spaces - HBufC* croppedLeft = leftPtr.AllocLC(); - TPtr croppedLeftPtr = croppedLeft->Des(); - HBufC* croppedRight = rightPtr.AllocLC(); - TPtr croppedRightPtr = croppedRight->Des(); - - AknTextUtils::ReplaceCharacters( croppedLeftPtr, KCharsToReplace, ' ' ); - croppedLeftPtr.TrimAll(); - AknTextUtils::ReplaceCharacters( croppedRightPtr, KCharsToReplace, ' ' ); - croppedRightPtr.TrimAll(); - - result = croppedLeftPtr.CompareC( croppedRightPtr ); - - CleanupStack::PopAndDestroy( croppedRight ); - CleanupStack::PopAndDestroy( croppedLeft ); - // + const TInt leftOffset = FindSubjectStart( aLeft ); + const TInt rightOffset = FindSubjectStart( aRight ); + TPtrC leftPtr( aLeft.Ptr() + leftOffset, aLeft.Length() - leftOffset ); + TPtrC rightPtr( aRight.Ptr() + rightOffset, aRight.Length() - rightOffset ); + + // for unifying with UI - remove all white spaces + HBufC* croppedLeft = leftPtr.Alloc(); + HBufC* croppedRight = rightPtr.Alloc(); + + // Comparison is done only when allocation succeeds + if ( croppedLeft && croppedRight ) + { + TPtr croppedLeftPtr = croppedLeft->Des(); + TPtr croppedRightPtr = croppedRight->Des(); + + AknTextUtils::ReplaceCharacters( croppedLeftPtr, KCharsToReplace, ' ' ); + croppedLeftPtr.TrimAll(); + AknTextUtils::ReplaceCharacters( croppedRightPtr, KCharsToReplace, ' ' ); + croppedRightPtr.TrimAll(); + + result = croppedLeftPtr.CompareC( croppedRightPtr ); + } + + delete croppedRight; + delete croppedLeft; return result; }