Revision: 201027
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 06 Jul 2010 16:23:19 +0300
changeset 44 601ab138ba0b
parent 37 6be019398652
child 48 294f83a8e6de
child 51 a7c938434754
Revision: 201027 Kit: 2010127
charconvfw/charconv_fw/group/charconv.mmp
charconvfw/charconv_fw/src/charconv/charconv.cpp
charconvfw/charconv_fw/traces/OstTraceDefinitions.h
charconvfw/charconv_fw/traces/fixed_id.definitions
charconvfw/charconvplugins/group/Win1250.mmp
charconvfw/charconvplugins/src/plugins/EUCJP_PACKED_2.CPP
charconvfw/charconvplugins/src/plugins/ISO2022JP1_2.CPP
charconvfw/charconvplugins/src/plugins/ISO2022JP_2.CPP
charconvfw/charconvplugins/src/plugins/iscii.cpp
charconvfw/charconvplugins/src/shared/CnvPictographShared.cpp
charconvfw/charconvplugins/src/shared/JISBASE_SHARED_2.CPP
fontservices/fontstore/group/FNTSTORE.MMP
fontservices/fontstore/group/FntstoreTest.iby
fontservices/fontstore/group/TFntStoreServer.mmp
fontservices/fontstore/src/FNTBODY.CPP
fontservices/fontstore/src/FNTSTORE.CPP
fontservices/fontstore/src/FNTUTIL.CPP
fontservices/fontstore/src/OPENFONT.CPP
fontservices/fontstore/tfs/T_IsolatedFontStore.cpp
fontservices/fontstore/tfs/T_IsolatedFontStore.h
fontservices/fontstore/tfs/t_fontsessioncache.cpp
fontservices/fontstore/tfs/t_fontsessioncacheproc.cpp
fontservices/fontstore/traces/OstTraceDefinitions.h
fontservices/fontstore/traces/fixed_id.definitions
fontservices/referencefonts/utils/bdfharn.cpp
fontservices/referencefonts/utils/bdfharn.h
fontservices/referencefonts/utils/ttf2bdf.cpp
localisation/localesupport/new_locale_dll/collation/share/locl_collation.h
textandlocutils/inlinetext/inc/InlineTextNoMatchesIndicatorSource.h
textandlocutils/jplangutil/group/bld.inf
textandlocutils/jplangutil/group/jplangutil.mmp
textandlocutils/numbergrouping/conf/numbergrouping.confml
textandlocutils/numbergrouping/group/bld.inf
textandlocutils/numbergrouping/src/NumberGrouping.cpp
textandlocutils/numbergrouping/src/RegularExpression.cpp
textandlocutils/numbergrouping/src/StateMachine.cpp
textrendering/textformatting/group/FORM2.MMP
textrendering/textformatting/group/TAGMA.MMP
textrendering/textformatting/group/Undo.mmp
textrendering/textformatting/tagma/TMGLYPH.CPP
textrendering/textformatting/tagma/TMINTERP.CPP
textrendering/textformatting/tagma/TMLAYOUT.CPP
textrendering/textformatting/tagma/TMTEXT.CPP
textrendering/textformatting/tagma/TmBufferBase.cpp
textrendering/textformatting/tagma/TmChunk.cpp
textrendering/textformatting/tagma/TmHighlightSource.cpp
textrendering/textformatting/tagma/TmLine.cpp
textrendering/textformatting/tbox/CARET.CPP
textrendering/textformatting/tbox/FRMPAGE.CPP
textrendering/textformatting/tbox/FRMPRINT.CPP
textrendering/textformatting/tbox/FRMSCRND.CPP
textrendering/textformatting/tbox/FRMTVIEW.CPP
textrendering/textformatting/tbox/FormLinePag.cpp
textrendering/textformatting/tbox/LAYEMU.CPP
textrendering/textformatting/test/group/TBidiCursorPos.mmp
textrendering/textformatting/test/group/TGraphemeIterator.mmp
textrendering/textformatting/test/group/TInterpreter.mmp
textrendering/textformatting/test/group/TLINEPAG.MMP
textrendering/textformatting/test/group/TTagmaImp.mmp
textrendering/textformatting/test/group/TTextView2.mmp
textrendering/textformatting/test/src/TForm18030/TForm18030.mmp
textrendering/textformatting/test/traces/OstTraceDefinitions.h
textrendering/textformatting/test/traces/fixed_id.definitions
textrendering/textformatting/traces/OstTraceDefinitions.h
textrendering/textformatting/traces/fixed_id.definitions
textrendering/texthandling/group/ETEXT.MMP
textrendering/texthandling/stext/ParseLst.cpp
textrendering/texthandling/stext/TXTETEXT.CPP
textrendering/texthandling/stext/TXTFMLYR.CPP
textrendering/texthandling/stext/TXTFMSTM.CPP
textrendering/texthandling/stext/TXTFRMAT.CPP
textrendering/texthandling/stext/TXTGLOBL.CPP
textrendering/texthandling/stext/TXTINDEX.CPP
textrendering/texthandling/stext/TXTIXSTR.CPP
textrendering/texthandling/stext/TXTRICH.CPP
textrendering/texthandling/stext/TXTRTFLD.CPP
textrendering/texthandling/stext/TXTRTSTR.CPP
textrendering/texthandling/stext/TXTSCAN.CPP
textrendering/texthandling/stext/TXTSTYLE.CPP
textrendering/texthandling/stext/TxtWriter.cpp
textrendering/texthandling/stext/Txtparse.cpp
textrendering/texthandling/traces/OstTraceDefinitions.h
textrendering/texthandling/traces/fixed_id.definitions
textrendering/texthandling/ttext/TEtextDefect.mmp
textrendering/texthandling/ttext/T_FMT1.mmp
--- a/charconvfw/charconv_fw/group/charconv.mmp	Fri Jun 11 15:33:54 2010 +0300
+++ b/charconvfw/charconv_fw/group/charconv.mmp	Tue Jul 06 16:23:19 2010 +0300
@@ -34,7 +34,7 @@
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 OS_LAYER_ESTLIB_SYSTEMINCLUDE
 
-USERINCLUDE		../src/charconv
+USERINCLUDE		../src/charconv ../traces
 
 SOURCEPATH		../src/charconv
 SOURCE			charconv.cpp
--- a/charconvfw/charconv_fw/src/charconv/charconv.cpp	Fri Jun 11 15:33:54 2010 +0300
+++ b/charconvfw/charconv_fw/src/charconv/charconv.cpp	Tue Jul 06 16:23:19 2010 +0300
@@ -26,6 +26,11 @@
 #include <charactersetconverter.h>
 #include "chcnvpanic.h"
 #include "charconv_tls.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "charconvTraces.h"
+#endif
+
 
 #if defined(_DEBUG)
 #define NON_DEBUG_INLINE
@@ -129,6 +134,7 @@
 			break;
 #if defined(_DEBUG)
 		default:
+		    OstTraceExt3( TRACE_DUMP, _ISBUILTINCHARACTERSET, "::IsBuiltInCharacterSet;aCharacterSetIdentifier=%u;aConfidenceLevel=%d;aSample=%x", aCharacterSetIdentifier, aConfidenceLevel, ( TUint )&( aSample ) );	    
 			Panic(EPanicCharacterSetNotPresent);
 			break;
 #endif
@@ -157,8 +163,16 @@
 	TTlsData* tlsData=STATIC_CAST(TTlsData*, Dll::Tls());
 	if (tlsData!=NULL)
 		{
+		if ( tlsData->iCurrentCharacterSetConverter!=NULL )
+		    {
+		    OstTrace0( TRACE_DUMP, TTLSDATA_CHARACTERSETCONVERTERISBEINGDESTROYED, "EPanicDestructionDuringConversion" );	    
+		    }
 		__ASSERT_DEBUG(tlsData->iCurrentCharacterSetConverter==NULL, Panic(EPanicDestructionDuringConversion));
 		--tlsData->iReferenceCount;
+		if ( tlsData->iReferenceCount < 0 )
+		    {
+		    OstTrace0( TRACE_DUMP, DUP1_TTLSDATA_CHARACTERSETCONVERTERISBEINGDESTROYED, "EPanicBadTlsDataReferenceCount" );
+		    }
 		__ASSERT_DEBUG(tlsData->iReferenceCount>=0, Panic(EPanicBadTlsDataReferenceCount));
 		if (tlsData->iReferenceCount<=0)
 			{
@@ -171,7 +185,15 @@
 void TTlsData::SetCurrentCharacterSetConverter(const CCnvCharacterSetConverter* aCharacterSetConverter)
 	{
 	TTlsData* tlsData=STATIC_CAST(TTlsData*, Dll::Tls());
+	if ( tlsData==NULL )
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_TTLSDATA_SETCURRENTCHARACTERSETCONVERTER, "No Tls Data in TTlsData::SetCurrentCharacterSetConverter" );
+	    }
 	__ASSERT_ALWAYS(tlsData!=NULL, Panic(EPanicNoTlsData));
+    if ( (tlsData->iCurrentCharacterSetConverter==NULL)==(aCharacterSetConverter==NULL) )
+        {
+        OstTrace0( TRACE_FATAL, TTLSDATA_SETCURRENTCHARACTERSETCONVERTER, "Bad Toggle of current characater set converter in TTlsData::SetCurrentCharacterSetConverter" );  
+        }
 	__ASSERT_ALWAYS((tlsData->iCurrentCharacterSetConverter==NULL)!=(aCharacterSetConverter==NULL), Panic(EPanicBadToggleOfCurrentCharacterSetConverter));
 	tlsData->iCurrentCharacterSetConverter=aCharacterSetConverter;
 	}
@@ -231,7 +253,7 @@
 	void ReadBufferL(TDes8& aBuffer, TInt aBufferLength);
 	HBufC8* ReadBufferL(TInt aBufferLength);
 	HBufC8* ReadBufferLC(TInt aBufferLength);
-	inline TBool IsEndOfFile() const {__ASSERT_DEBUG(iNextByteToConsume<=iOnePastEndOfBuffer, Panic(EPanicPastEndOfFile)); return iNextByteToConsume>=iOnePastEndOfBuffer;}
+	inline TBool IsEndOfFile() const {if ( iNextByteToConsume>iOnePastEndOfBuffer ) {OstTrace0( TRACE_DUMP, _NONSHARABLE_CLASS, "EPanicPastEndOfFile" );}__ASSERT_DEBUG(iNextByteToConsume<=iOnePastEndOfBuffer, Panic(EPanicPastEndOfFile)); return iNextByteToConsume>=iOnePastEndOfBuffer;}
 private:
 	enum {ENumberOfBytesToConsumeBetweenEachReAllocation=1000};
 private:
@@ -253,13 +275,20 @@
 
 void CFileReader::ReAllocateTheBuffer() // put this function first so that the compiler does actually inline it for non-DEBUG builds
 	{
+	if ( (iBuffer==NULL) || (iNextByteToConsume<iFlagPoleForReAllocation ) )
+	    {
+	    OstTrace0( TRACE_DUMP, CFILEREADER_REALLOCATETHEBUFFER, "EPanicNotPastFlagPoleForReAllocation" );
+	    }
+	
 	__ASSERT_DEBUG((iBuffer!=NULL) && (iNextByteToConsume>=iFlagPoleForReAllocation), Panic(EPanicNotPastFlagPoleForReAllocation));
 	const TInt lengthOfBuffer=iOnePastEndOfBuffer-iNextByteToConsume;
 	Mem::Copy(STATIC_CAST(TAny*, iBuffer), iNextByteToConsume, lengthOfBuffer);
-#if defined(_DEBUG)
 	const TAny* reAllocatedCell=
-#endif
-	User::ReAlloc(STATIC_CAST(TAny*, iBuffer), lengthOfBuffer);
+	        User::ReAlloc(STATIC_CAST(TAny*, iBuffer), lengthOfBuffer);
+	if ( reAllocatedCell!=iBuffer )
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CFILEREADER_REALLOCATETHEBUFFER, "EPanicReAllocatedCellMoved" );
+	    }
 	__ASSERT_DEBUG(reAllocatedCell==iBuffer, Panic(EPanicReAllocatedCellMoved));
 	iNextByteToConsume=iBuffer;
 	iOnePastEndOfBuffer=iBuffer+lengthOfBuffer;
@@ -288,11 +317,16 @@
 
 void CFileReader::SkipL(TInt aNumberOfBytes)
 	{
+	if ( aNumberOfBytes<0 )
+	    {
+	    OstTrace0( TRACE_DUMP, CFILEREADER_SKIPL, "EPanicNegativeNumberOfBytes" );
+	    }
 	__ASSERT_DEBUG(aNumberOfBytes>=0, Panic(EPanicNegativeNumberOfBytes));
 	CheckPointers(EPanicInconsistentFileReader1);
 	const TUint8* newNextByteToConsume=iNextByteToConsume+aNumberOfBytes;
 	if (newNextByteToConsume>iOnePastEndOfBuffer)
 		{
+		OstTrace0( TRACE_FATAL, DUP2_CFILEREADER_SKIPL, "KErrCorrupt" );
 		User::Leave(KErrCorrupt);
 		}
 	iNextByteToConsume=newNextByteToConsume;
@@ -327,6 +361,7 @@
 	const TUint8* newNextByteToConsume=iNextByteToConsume+sizeof(TUint16);
 	if (newNextByteToConsume>iOnePastEndOfBuffer)
 		{
+		OstTrace0( TRACE_FATAL, CFILEREADER_READUINT16L, "KErrCorrupt" );
 		User::Leave(KErrCorrupt);
 		}
 	const TInt integer=(*iNextByteToConsume|(*(iNextByteToConsume+1)<<8));
@@ -393,6 +428,7 @@
 	const TUint8* bytePointer=iNextByteToConsume;
 	if (bytePointer>=iOnePastEndOfBuffer)
 		{
+		OstTrace0( TRACE_FATAL, CFILEREADER_READPOSITIVEINTEGERCOMPACTED30L, "KErrCorrupt" );
 		User::Leave(KErrCorrupt);
 		}
 	TInt integer=*bytePointer;
@@ -402,6 +438,7 @@
 		++bytePointer;
 		if (bytePointer>=iOnePastEndOfBuffer)
 			{
+			OstTrace0( TRACE_FATAL, DUP1_CFILEREADER_READPOSITIVEINTEGERCOMPACTED30L, "KErrCorrupt" );
 			User::Leave(KErrCorrupt);
 			}
 		integer<<=8;
@@ -411,6 +448,7 @@
 			integer&=~0x00004000;
 			if (bytePointer+2>=iOnePastEndOfBuffer)
 				{
+				OstTrace0( TRACE_FATAL, DUP2_CFILEREADER_READPOSITIVEINTEGERCOMPACTED30L, "KErrCorrupt" );
 				User::Leave(KErrCorrupt);
 				}
 			++bytePointer;
@@ -437,6 +475,7 @@
 	const TUint8* bytePointer=iNextByteToConsume;
 	if (bytePointer>=iOnePastEndOfBuffer)
 		{
+		OstTrace0( TRACE_FATAL, CFILEREADER_READSIGNEDINTEGERCOMPACTED29L, "KErrCorrupt" );
 		User::Leave(KErrCorrupt);
 		}
 	TInt integer=*bytePointer;
@@ -448,6 +487,7 @@
 		++bytePointer;
 		if (bytePointer>=iOnePastEndOfBuffer)
 			{
+			OstTrace0( TRACE_FATAL, DUP1_CFILEREADER_READSIGNEDINTEGERCOMPACTED29L, "KErrCorrupt" );
 			User::Leave(KErrCorrupt);
 			}
 		integer<<=8;
@@ -457,6 +497,7 @@
 			integer&=~0x00002000;
 			if (bytePointer+2>=iOnePastEndOfBuffer)
 				{
+				OstTrace0( TRACE_FATAL, DUP2_CFILEREADER_READSIGNEDINTEGERCOMPACTED29L, "KErrCorrupt" );
 				User::Leave(KErrCorrupt);
 				}
 			++bytePointer;
@@ -483,11 +524,16 @@
 
 void CFileReader::ReadBufferL(TDes8& aBuffer, TInt aBufferLength)
 	{
+	if ( aBufferLength<0 )
+	    {
+	    OstTrace0( TRACE_DUMP, CFILEREADER_READBUFFERL, "EPanicNegativeBufferLength1" );
+	    }
 	__ASSERT_DEBUG(aBufferLength>=0, Panic(EPanicNegativeBufferLength1));
 	CheckPointers(EPanicInconsistentFileReader15);
 	const TUint8* newNextByteToConsume=iNextByteToConsume+aBufferLength;
 	if (newNextByteToConsume>iOnePastEndOfBuffer)
 		{
+		OstTrace0( TRACE_FATAL, DUP1_CFILEREADER_READBUFFERL, "KErrCorrupt" );
 		User::Leave(KErrCorrupt);
 		}
 	aBuffer=TPtrC8(iNextByteToConsume, aBufferLength);
@@ -501,11 +547,16 @@
 
 HBufC8* CFileReader::ReadBufferL(TInt aBufferLength)
 	{
+	if ( aBufferLength<0 )
+	    {
+	    OstTrace0( TRACE_DUMP, DUP2_CFILEREADER_READBUFFERL, "EPanicNegativeBufferLength2" );
+	    }
 	__ASSERT_DEBUG(aBufferLength>=0, Panic(EPanicNegativeBufferLength2));
 	CheckPointers(EPanicInconsistentFileReader17);
 	const TUint8* newNextByteToConsume=iNextByteToConsume+aBufferLength;
 	if (newNextByteToConsume>iOnePastEndOfBuffer)
 		{
+		OstTrace0( TRACE_FATAL, DUP3_CFILEREADER_READBUFFERL, "KErrCorrupt" );
 		User::Leave(KErrCorrupt);
 		}
 	HBufC8* buffer=TPtrC8(iNextByteToConsume, aBufferLength).AllocL();
@@ -544,12 +595,17 @@
 void CFileReader::ConstructForNonRomFileL(RFile& aFile)
 	{
 	TInt lengthOfBuffer;
+	if ( aFile.Size(lengthOfBuffer) < 0 )
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CFILEREADER_CONSTRUCTFORNONROMFILEL, "aFile.Size(lengthOfBuffer) < 0" );
+	    }
 	User::LeaveIfError(aFile.Size(lengthOfBuffer));
 	iBuffer=STATIC_CAST(TUint8*, User::AllocL(lengthOfBuffer+1));
 	TPtr8 buffer(iBuffer, 0, lengthOfBuffer);
 	User::LeaveIfError(aFile.Read(buffer));
 	if ((buffer.Length()!=lengthOfBuffer) || (lengthOfBuffer<=0))
 		{
+		OstTrace0( TRACE_FATAL, CFILEREADER_CONSTRUCTFORNONROMFILEL, "KErrCorrupt" );
 		User::Leave(KErrCorrupt);
 		}
 	iNextByteToConsume=iBuffer;
@@ -846,6 +902,10 @@
 		--iCacheSize;
 		}
 	//If iCacheSize is not 0, then there is something wrong with adding/removing cache entry functionality
+	if ( iCacheSize != 0)
+	    {
+	    OstTrace0( TRACE_DUMP, CCHARSETCNVCACHE_CCHARSETCNVCACHE, "iCacheSize not zero in CCharsetCnvCache::~CCharsetCnvCache" );
+	    }
 	__ASSERT_DEBUG(iCacheSize == 0, User::Invariant());
 	}
 
@@ -884,6 +944,10 @@
 			--iCacheSize;
 			}
 		}
+	if ( !entry )
+	    {
+	    OstTrace0( TRACE_FATAL, CCHARSETCNVCACHE_GETCONVERTERL, "entry NULL in CCharsetCnvCache::GetConverterL" );   
+	    }
 	__ASSERT_ALWAYS(entry, User::Invariant());
 	return entry->iCharsetCnv;
 	}
@@ -900,6 +964,10 @@
 CCharacterSetConverterPluginInterface* CCharsetCnvCache::Converter(TUid aImplUid)
 	{
 	TCharsetCnvEntry* entry = Find(aImplUid);
+	if ( entry == NULL || entry->iCharsetCnv == NULL )
+	    {
+	    OstTrace0( TRACE_FATAL, CCHARSETCNVCACHE_CONVERTER, "entry or entry->iCharsetCnv NULL in CCharsetCnvCache::Converter" );
+	    }
 	__ASSERT_ALWAYS(entry != NULL && entry->iCharsetCnv != NULL, Panic(EPanicCharacterSetConverterNotLoaded));
 	iCache.Remove(*entry);
 	iCache.AddFirst(*entry);
@@ -918,6 +986,10 @@
 */
 void CCharsetCnvCache::SetMaxSize(TInt aSize)
 	{
+	if ( aSize < KMinCacheSize )
+	    {
+	    OstTrace0( TRACE_FATAL, CCHARSETCNVCACHE_SETMAXSIZE, "aSize < KMinCacheSize in CCharsetCnvCache::SetMaxSize" );
+	    }
 	__ASSERT_ALWAYS(aSize >= KMinCacheSize, User::Invariant());
 	//Remove and destroy the last cache entries, if iCacheSize > aSize.
 	for(;iCacheSize>aSize;--iCacheSize)
@@ -982,6 +1054,10 @@
 void CCharsetCnvCache::RemoveLast()
 	{
 	TCharsetCnvEntry* lastEntry = iCache.Last();
+	if ( !lastEntry )
+	    {
+	    OstTrace0( TRACE_FATAL, CCHARSETCNVCACHE_REMOVELAST, "lastEntry NULL in CCharsetCnvCache::RemoveLast" );
+	    }
 	__ASSERT_ALWAYS(lastEntry, User::Invariant());
 	iCache.Remove(*lastEntry);
 	delete lastEntry->iCharsetCnv;
@@ -1311,6 +1387,7 @@
 																 aFileServerSession);
 	if (availability!=EAvailable)
 		{
+		OstTrace0( TRACE_FATAL, CCNVCHARACTERSETCONVERTER_PREPARETOCONVERTTOORFROML, "Conversion Not found in CCnvCharacterSetConverter::PrepareToConvertToOrFromL" );
 		User::Leave(KErrNotFound);
 		}
 	}
@@ -1327,7 +1404,7 @@
 
 This overload of the function is simpler to use than the other and does not 
 panic if the character set with the specified UID is not available at run 
-timeÂ, it simply returns ENotAvailable. It should be used when the conversion 
+timeÂ, it simply returns ENotAvailable. It should be used when the conversion 
 character set is specified within the text object being converted, e.g. an 
 email message, or an HTML document. If the character set is not specified, 
 the user must be presented with a list of all available sets, so it makes 
@@ -1383,6 +1460,10 @@
 CCnvCharacterSetConverter::SetDefaultEndiannessOfForeignCharacters(
 											TEndianness aDefaultEndiannessOfForeignCharacters)
     {
+    if ( (aDefaultEndiannessOfForeignCharacters!=ELittleEndian) && (aDefaultEndiannessOfForeignCharacters!=EBigEndian) )
+        {
+        OstTrace0( TRACE_FATAL, CCNVCHARACTERSETCONVERTER_SETDEFAULTENDIANNESSOFFOREIGNCHARACTERS, "Bad Default Endianness Of Foreign Characters in CCnvCharacterSetConverter::SetDefaultEndiannessOfForeignCharacters" );        
+        }
 	__ASSERT_ALWAYS((aDefaultEndiannessOfForeignCharacters==ELittleEndian) || (aDefaultEndiannessOfForeignCharacters==EBigEndian), Panic(EPanicBadDefaultEndiannessOfForeignCharacters));
 	iDefaultEndiannessOfForeignCharacters=aDefaultEndiannessOfForeignCharacters;
 	}
@@ -1410,6 +1491,10 @@
 CCnvCharacterSetConverter::SetDowngradeForExoticLineTerminatingCharacters(
 	TDowngradeForExoticLineTerminatingCharacters aDowngradeForExoticLineTerminatingCharacters)
 	{
+    if ( (aDowngradeForExoticLineTerminatingCharacters!=EDowngradeExoticLineTerminatingCharactersToCarriageReturnLineFeed) && (aDowngradeForExoticLineTerminatingCharacters!=EDowngradeExoticLineTerminatingCharactersToJustLineFeed) )
+    {
+    OstTrace0( TRACE_FATAL, CCNVCHARACTERSETCONVERTER_SETDOWNGRADEFOREXOTICLINETERMINATINGCHARACTERS, "Bad Downgrade For Exotic Line Terminating Characters1 in CCnvCharacterSetConverter::SetDowngradeForExoticLineTerminatingCharacters" );
+    }
 	__ASSERT_ALWAYS((aDowngradeForExoticLineTerminatingCharacters==EDowngradeExoticLineTerminatingCharactersToCarriageReturnLineFeed) || (aDowngradeForExoticLineTerminatingCharacters==EDowngradeExoticLineTerminatingCharactersToJustLineFeed), Panic(EPanicBadDowngradeForExoticLineTerminatingCharacters1));
 	iDowngradeForExoticLineTerminatingCharacters=aDowngradeForExoticLineTerminatingCharacters;
 	}
@@ -1574,6 +1659,10 @@
 						const TDesC16& aUnicode, 
 						TArrayOfAscendingIndices& aIndicesOfUnconvertibleCharacters) const
 	{
+	if ( iCharacterSetIdentifierOfLoadedConversionData==0 )
+	    {
+	    OstTrace0( TRACE_FATAL, CCNVCHARACTERSETCONVERTER_CONVERTFROMUNICODE, "NullCharacterSetIdentifier1 in CCnvCharacterSetConverter::ConvertFromUnicode" );
+	    }
 	__ASSERT_ALWAYS(iCharacterSetIdentifierOfLoadedConversionData!=0, Panic(EPanicNullCharacterSetIdentifier1));
 	if (aUnicode.Length()==0)
 		{
@@ -1735,6 +1824,10 @@
 								TInt& aNumberOfUnconvertibleCharacters, 
 								TInt& aIndexOfFirstByteOfFirstUnconvertibleCharacter) const
 	{
+	if ( iCharacterSetIdentifierOfLoadedConversionData==0 )
+	    {
+	    OstTrace0( TRACE_FATAL, CCNVCHARACTERSETCONVERTER_CONVERTTOUNICODE, "Null CharacterSetIdentifier2 in CCnvCharacterSetConverter::ConvertToUnicode" );    
+	    }
 	__ASSERT_ALWAYS(iCharacterSetIdentifierOfLoadedConversionData!=0, Panic(EPanicNullCharacterSetIdentifier2));
 	aNumberOfUnconvertibleCharacters=0;
 	aIndexOfFirstByteOfFirstUnconvertibleCharacter=-1;
@@ -1778,6 +1871,10 @@
 			returnValue=CnvUtfConverter::ConvertToUnicodeFromUtf7(aUnicode, aForeign, ETrue, aState);
 			break;
 		default:
+		    if ( iConversionData==NULL )
+		        {
+		        OstTrace0( TRACE_FATAL, DUP1_CCNVCHARACTERSETCONVERTER_CONVERTTOUNICODE, "No ConversionData2 in CCnvCharacterSetConverter::ConvertToUnicode" );
+		        }
 			__ASSERT_ALWAYS(iConversionData!=NULL, Panic(EPanicNoConversionData2));
 			returnValue=DoConvertToUnicode(*iConversionData, iDefaultEndiannessOfForeignCharacters, aUnicode, aForeign, aNumberOfUnconvertibleCharacters, aIndexOfFirstByteOfFirstUnconvertibleCharacter);
 			break;
@@ -1888,6 +1985,7 @@
 																plugInImplementsAutoDetect, 
 																aConfidenceLevel, 
 																aSample);
+			OstTraceExt3( TRACE_DUMP, CCNVCHARACTERSETCONVERTER_AUTODETECTCHARSETL, "detect identifier 0x%x, return isInThisCharSet=%d, aConfidenceLevel=%d",  implUid.iUid, isInThisCharSet, aConfidenceLevel);
 			if ((!plugInImplementsAutoDetect) || !isInThisCharSet)
 				{
 				continue;
@@ -1918,6 +2016,7 @@
 	const TInt numberOfCandidateCharacterSets=chid.Count();
 	if (numberOfCandidateCharacterSets ==0)
  		{
+        OstTrace0( TRACE_DUMP, DUP2_CCNVCHARACTERSETCONVERTER_AUTODETECTCHARSETL, "We donot find any candidate in first run, so add all plugin as candidate." );
  		// all the charcterset returned 0, so take all and find then one with least unconvertible
  		// characters
  		for (TInt i=aArrayOfCharacterSetsAvailable.Count()-1; i>=0; --i)
@@ -1939,6 +2038,8 @@
 			TInt state=KStateDefault;
 			TInt unconvertibleChars;
 			charconverter->ConvertToUnicode(*convertedToUnicode,aSample,state,unconvertibleChars);
+			OstTraceExt2( TRACE_DUMP, DUP1_CCNVCHARACTERSETCONVERTER_AUTODETECTCHARSETL, "Plugin 0x%x has %d unconvertibleChars", chid[i], unconvertibleChars);
+			
 			if (unconvertibleChars < min)
 				{
 				min = unconvertibleChars;
@@ -1952,6 +2053,7 @@
 
 	//aConfidenceLevel=another;
 	aCharacterSetIdentifier = chid[result];
+	OstTrace1( TRACE_DUMP, DUP3_CCNVCHARACTERSETCONVERTER_AUTODETECTCHARSETL, "Use 0x%x as the auto detected plugin", aCharacterSetIdentifier);
 	
 	if (aConfidenceLevel <= ELowestThreshold) 
 		{
@@ -2053,6 +2155,10 @@
 LOCAL_C TUint OutputCharacterCode(TUint aInputCharacterCode, 
 								  const SCnvConversionData::SOneDirectionData::SRange& aRange)
 	{
+	if ( (aInputCharacterCode<aRange.iFirstInputCharacterCodeInRange) || (aInputCharacterCode>aRange.iLastInputCharacterCodeInRange) )
+	    {
+	    OstTrace0( TRACE_FATAL, _OUTPUTCHARACTERCODE, "Input Character Code Not In Range in ::OutputCharacterCode" );
+	    }
 	__ASSERT_DEBUG((aInputCharacterCode>=aRange.iFirstInputCharacterCodeInRange) && (aInputCharacterCode<=aRange.iLastInputCharacterCodeInRange), Panic(EPanicInputCharacterCodeNotInRange));
 	switch (aRange.iAlgorithm)
 		{
@@ -2060,9 +2166,17 @@
 		return aInputCharacterCode;
 	case SCnvConversionData::SOneDirectionData::SRange::EOffset:
 #if defined(CONST_STATIC_UNIONS_ARE_POSSIBLE)
+	    if (aRange.iData.iOffset==0)
+	        {
+	        OstTrace0( TRACE_DUMP, DUP1__OUTPUTCHARACTERCODE, "EPanicZeroOffset1" );
+	        }
 		__ASSERT_DEBUG(aRange.iData.iOffset!=0, Panic(EPanicZeroOffset1));
 		return aInputCharacterCode+aRange.iData.iOffset;
 #else
+		if (STATIC_CAST(TInt, aRange.iData.iWord1)==0)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP2__OUTPUTCHARACTERCODE, "EPanicZeroOffset2" );
+		    }
 		__ASSERT_DEBUG(STATIC_CAST(TInt, aRange.iData.iWord1)!=0, Panic(EPanicZeroOffset2));
 		return aInputCharacterCode+STATIC_CAST(TInt, aRange.iData.iWord1);
 #endif
@@ -2083,9 +2197,17 @@
 		TInt rightIndex=STATIC_CAST(TInt, aRange.iData.iWord1);
 		const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry* const entryArray=REINTERPRET_CAST(SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry*, aRange.iData.iWord2);
 #endif
+		if(rightIndex<=0)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP3__OUTPUTCHARACTERCODE, "EPanicEmptyKeyedTable1616" );
+		    }
 		__ASSERT_DEBUG(rightIndex>0, Panic(EPanicEmptyKeyedTable1616));
 		FOREVER
 			{
+			if (leftIndex>rightIndex)
+			    {
+			    OstTrace0( TRACE_DUMP, DUP4__OUTPUTCHARACTERCODE, "EPanicBadIndices1" );
+			    }
 			__ASSERT_DEBUG(leftIndex<=rightIndex, Panic(EPanicBadIndices1));
 			if (leftIndex==rightIndex)
 				{
@@ -2117,9 +2239,17 @@
 		TInt rightIndex=STATIC_CAST(TInt, aRange.iData.iWord1);
 		const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable16OfIndexedTables16::SKeyedEntry* const keyedEntryArray=REINTERPRET_CAST(SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable16OfIndexedTables16::SKeyedEntry*, aRange.iData.iWord2);
 #endif
+		if (rightIndex<=0)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP5__OUTPUTCHARACTERCODE, "EPanicEmptyKeyedTable16OfIndexedTables16" );
+		    }
 		__ASSERT_DEBUG(rightIndex>0, Panic(EPanicEmptyKeyedTable16OfIndexedTables16));
 		FOREVER
 			{
+			if (leftIndex>rightIndex)
+			    {
+			    OstTrace0( TRACE_DUMP, DUP6__OUTPUTCHARACTERCODE, "EPanicBadIndices2" );
+			    }
 			__ASSERT_DEBUG(leftIndex<=rightIndex, Panic(EPanicBadIndices2));
 			if (leftIndex==rightIndex)
 				{
@@ -2160,9 +2290,17 @@
 		TInt rightIndex=STATIC_CAST(TInt, aRange.iData.iWord1);
 		const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable3232::SEntry* const entryArray=REINTERPRET_CAST(SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable3232::SEntry*, aRange.iData.iWord2);
 #endif
+		if (rightIndex<=0)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP7__OUTPUTCHARACTERCODE, "EPanicEmptyKeyedTable3232" );
+		    }
 		__ASSERT_DEBUG(rightIndex>0, Panic(EPanicEmptyKeyedTable3232));
 		FOREVER
 			{
+			if (leftIndex>rightIndex)
+			    {
+			    OstTrace0( TRACE_DUMP, DUP8__OUTPUTCHARACTERCODE, "EPanicBadIndices1" );
+			    }
 			__ASSERT_DEBUG(leftIndex<=rightIndex, Panic(EPanicBadIndices1));
 			if (leftIndex==rightIndex)
 				{
@@ -2194,9 +2332,17 @@
 		TInt rightIndex=STATIC_CAST(TInt, aRange.iData.iWord1);
 		const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable32OfIndexedTables32::SKeyedEntry* const keyedEntryArray=REINTERPRET_CAST(SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable32OfIndexedTables32::SKeyedEntry*, aRange.iData.iWord2);
 #endif
+		if (rightIndex<=0)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP9__OUTPUTCHARACTERCODE, "EPanicEmptyKeyedTable32OfIndexedTables32" );
+		    }
 		__ASSERT_DEBUG(rightIndex>0, Panic(EPanicEmptyKeyedTable32OfIndexedTables32));
 		FOREVER
 			{
+			if (leftIndex>rightIndex)
+			    {
+			    OstTrace0( TRACE_DUMP, DUP10__OUTPUTCHARACTERCODE, "EPanicBadIndices2" );
+			    }
 			__ASSERT_DEBUG(leftIndex<=rightIndex, Panic(EPanicBadIndices2));
 			if (leftIndex==rightIndex)
 				{
@@ -2222,6 +2368,7 @@
 		
 #if defined(_DEBUG)
 	default:
+	    OstTrace0( TRACE_DUMP, DUP11__OUTPUTCHARACTERCODE, "EPanicBadAlgorithm1" );
 		Panic(EPanicBadAlgorithm1);
 #endif
 		}
@@ -2235,8 +2382,20 @@
 			const SCnvConversionData::SOneDirectionData::SRange* aFirstUnicodeToForeignRange, 
 			const SCnvConversionData::SOneDirectionData::SRange* aLastUnicodeToForeignRange)
 	{
+	if (aFirstUnicodeToForeignRange==NULL)
+	    {
+	    OstTrace0( TRACE_DUMP, _CONVERTSTOFOREIGNCHARACTERSET, "EPanicNullPointer1" );
+	    }
 	__ASSERT_DEBUG(aFirstUnicodeToForeignRange!=NULL, Panic(EPanicNullPointer1));
+	if (aLastUnicodeToForeignRange==NULL)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1__CONVERTSTOFOREIGNCHARACTERSET, "EPanicNullPointer2" );
+	    }
 	__ASSERT_DEBUG(aLastUnicodeToForeignRange!=NULL, Panic(EPanicNullPointer2));
+	if (aFirstUnicodeToForeignRange>aLastUnicodeToForeignRange)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP2__CONVERTSTOFOREIGNCHARACTERSET, "EPanicCrossedPointers" );
+	    }
 	__ASSERT_DEBUG(aFirstUnicodeToForeignRange<=aLastUnicodeToForeignRange, Panic(EPanicCrossedPointers));
 	for (const SCnvConversionData::SOneDirectionData::SRange* currentUnicodeToForeignRange=aFirstUnicodeToForeignRange; ; ++currentUnicodeToForeignRange)
 		{
@@ -2249,6 +2408,10 @@
 				return ETrue;
 				}
 			}
+		if (currentUnicodeToForeignRange>aLastUnicodeToForeignRange)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP3__CONVERTSTOFOREIGNCHARACTERSET, "EPanicPointerPastUpperLimit21" );
+		    }
 		__ASSERT_DEBUG(currentUnicodeToForeignRange<=aLastUnicodeToForeignRange, Panic(EPanicPointerPastUpperLimit21));
 		if (currentUnicodeToForeignRange>=aLastUnicodeToForeignRange)
 			{
@@ -2281,7 +2444,7 @@
 aDefaultEndiannessOfForeignCharacters is ignored.
 @param aReplacementForUnconvertibleUnicodeCharacters The single character which 
 is to be used to replace unconvertible characters.
-@param aForeign On return, contains the converted text in a non-Unicode 
+@param aForeign On return, contains the converted text in a non-Unicode 
 character set.
 @param aUnicode The source Unicode text to be converted.
 @param aIndicesOfUnconvertibleCharacters On return holds the indices of each 
@@ -2331,7 +2494,7 @@
 is set to EInputConversionFlagStopAtFirstUnconvertibleCharacter, this 
 replacement character is used to replace the first unconvertible character, 
 then the conversion will stop.
-@param aForeign On return, contains the converted text in a non-Unicode 
+@param aForeign On return, contains the converted text in a non-Unicode 
 character set. This may already contain some text. If it does, and if 
 aInputConversionFlags specifies EInputConversionFlagAppend, then the converted 
 text is appended to this descriptor.
@@ -2386,6 +2549,10 @@
 		}
 	const TUint16* pointerToCurrentUnicodeCharacter=aUnicode.Ptr();
 	const TUint16* const pointerToLastUnicodeCharacter=pointerToCurrentUnicodeCharacter+(aUnicode.Length()-1);
+	if (aConversionData.iUnicodeToForeignData.iNumberOfRanges<=0)
+	    {
+	    OstTrace0( TRACE_DUMP, CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE, "EPanicBadNumberOfRanges1" );
+	    }
 	__ASSERT_DEBUG(aConversionData.iUnicodeToForeignData.iNumberOfRanges>0, Panic(EPanicBadNumberOfRanges1));
 	const SCnvConversionData::SOneDirectionData::SRange* const firstRange=aConversionData.iUnicodeToForeignData.iRangeArray;
 	const SCnvConversionData::SOneDirectionData::SRange* const lastRange=firstRange+(aConversionData.iUnicodeToForeignData.iNumberOfRanges-1);
@@ -2397,7 +2564,15 @@
 	TUint nextInputCharacterCode=KNoConversionAvailable;
 	FOREVER
 		{
+		if (pointerToPreviousForeignByte>pointerToLastForeignByte)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP1_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE, "EPanicPointerPastUpperLimit6" );
+		    }
 		__ASSERT_DEBUG(pointerToPreviousForeignByte<=pointerToLastForeignByte, Panic(EPanicPointerPastUpperLimit6));
+		if (pointerToCurrentUnicodeCharacter>pointerToLastUnicodeCharacter)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP2_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE, "EPanicPointerPastUpperLimit7" );
+		    }
 		__ASSERT_DEBUG(pointerToCurrentUnicodeCharacter<=pointerToLastUnicodeCharacter, Panic(EPanicPointerPastUpperLimit7));
 		TBool stop=EFalse;
 		TUint inputCharacterCode;
@@ -2412,6 +2587,10 @@
 			}
 		if ((inputCharacterCode>=0xd800) && (inputCharacterCode<0xdc00))
 			{
+			if (pointerToCurrentUnicodeCharacter>pointerToLastUnicodeCharacter)
+			    {
+			    OstTrace0( TRACE_DUMP, DUP3_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE, "EPanicPointerPastUpperLimit8" );
+			    }
 			__ASSERT_DEBUG(pointerToCurrentUnicodeCharacter<=pointerToLastUnicodeCharacter, Panic(EPanicPointerPastUpperLimit8));
 			if (pointerToCurrentUnicodeCharacter>=pointerToLastUnicodeCharacter)
 				{
@@ -2428,6 +2607,10 @@
 			secondHalfOfSurrogatePair&=~0xdc00;
 			inputCharacterCode|=secondHalfOfSurrogatePair;
 			inputCharacterCode+=0x00010000; // this must be added - it cannot be bitwise-"or"-ed
+			if (!(inputCharacterCode&0xffff0000) || !(inputCharacterCode<0x00110000))
+			    {
+			    OstTrace0( TRACE_DUMP, DUP4_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE, "EPanicBadNon16BitCharacterCode1" );
+			    }
 			__ASSERT_DEBUG((inputCharacterCode&0xffff0000) && (inputCharacterCode<0x00110000), Panic(EPanicBadNon16BitCharacterCode1));
 			}
 convertInputCharacterCode:
@@ -2441,6 +2624,10 @@
 				if (outputCharacterCode!=KNoConversionAvailable)
 					{
 					TInt temp=currentRange->iSizeOfOutputCharacterCodeInBytesIfForeign; // the meaning of temp changes during it's lifetime (hence the bland variable name)
+					if ( (temp<=0) || ((temp>STATIC_CAST(TInt, sizeof(TUint)))) || !((temp==sizeof(TUint)) || (outputCharacterCode<STATIC_CAST(TUint, 1<<(temp*8)))) )
+					    {
+					    OstTrace0( TRACE_DUMP, DUP5_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE, "EPanicBadSizeOfForeignOutputCharacterCode" );
+					    }
 					__ASSERT_DEBUG((temp>0) && (temp<=STATIC_CAST(TInt, sizeof(TUint))) && ((temp==sizeof(TUint)) || (outputCharacterCode<STATIC_CAST(TUint, 1<<(temp*8)))), Panic(EPanicBadSizeOfForeignOutputCharacterCode)); // ?? this second half of this assert needs a corresponding "KErrCorrupt"-check when loading the file
 					if (pointerToLastForeignByte-pointerToPreviousForeignByte<temp)
 						{
@@ -2453,9 +2640,17 @@
 					case ELittleEndian:
 						FOREVER
 							{
+							if (pointerToPreviousForeignByte>=pointerToLastForeignByte)
+							    {
+							    OstTrace0( TRACE_DUMP, DUP6_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE, "EPanicPointerPastUpperLimit9" );
+							    }
 							__ASSERT_DEBUG(pointerToPreviousForeignByte<pointerToLastForeignByte, Panic(EPanicPointerPastUpperLimit9));
 							++pointerToPreviousForeignByte;
 							*pointerToPreviousForeignByte=STATIC_CAST(TUint8, outputCharacterCode);
+							if (temp<0)
+							    {
+							    OstTrace0( TRACE_DUMP, DUP7_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE, "EPanicBadNumberOfRemainingForeignBytes1" );
+							    }
 							__ASSERT_DEBUG(temp>=0, Panic(EPanicBadNumberOfRemainingForeignBytes1));
 							if (temp<=0)
 								{
@@ -2468,9 +2663,17 @@
 					case EBigEndian:
 						FOREVER
 							{
+							if (pointerToPreviousForeignByte>=pointerToLastForeignByte)
+							    {
+							    OstTrace0( TRACE_DUMP, DUP8_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE, "EPanicPointerPastUpperLimit10" );
+							    }
 							__ASSERT_DEBUG(pointerToPreviousForeignByte<pointerToLastForeignByte, Panic(EPanicPointerPastUpperLimit10));
 							++pointerToPreviousForeignByte;
 							*pointerToPreviousForeignByte=STATIC_CAST(TUint8, outputCharacterCode>>temp);
+							if (temp<0)
+							    {
+							    OstTrace0( TRACE_DUMP, DUP9_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE, "EPanicBadNumberOfRemainingForeignBytes2" );
+							    }
 							__ASSERT_DEBUG(temp>=0, Panic(EPanicBadNumberOfRemainingForeignBytes2));
 							if (temp<=0)
 								{
@@ -2481,6 +2684,7 @@
 						break;
 #if defined(_DEBUG)
 					default:
+					    OstTrace0( TRACE_DUMP, DUP10_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE, "EPanicBadEndianness1" );
 						Panic(EPanicBadEndianness1);
 						break;
 #endif
@@ -2488,6 +2692,10 @@
 					break;
 					}
 				}
+			if (currentRange>lastRange)
+			    {
+			    OstTrace0( TRACE_DUMP, DUP11_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE, "EPanicPointerPastUpperLimit11" );
+			    }
 			__ASSERT_DEBUG(currentRange<=lastRange, Panic(EPanicPointerPastUpperLimit11));
 			if (currentRange>=lastRange)
 				{
@@ -2517,6 +2725,7 @@
 							goto convertInputCharacterCode;
 #if defined(_DEBUG)
 						default:
+						    OstTrace0( TRACE_DUMP, DUP12_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE, "EPanicBadDowngradeForExoticLineTerminatingCharacters2" );
 							Panic(EPanicBadDowngradeForExoticLineTerminatingCharacters2);
 							break;
 #endif
@@ -2542,6 +2751,10 @@
 						}
 					FOREVER
 						{
+						if (pointerToPreviousForeignByte>=pointerToLastForeignByte)
+						    {
+						    OstTrace0( TRACE_DUMP, DUP13_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE, "EPanicPointerPastUpperLimit12" );
+						    }
 						__ASSERT_DEBUG(pointerToPreviousForeignByte<pointerToLastForeignByte, Panic(EPanicPointerPastUpperLimit12));
 						++pointerToPreviousForeignByte;
 						*pointerToPreviousForeignByte=*pointerToReadFrom;
@@ -2563,12 +2776,20 @@
 			}
 		if (inputCharacterCode>=0x00010000)
 			{
+			if (pointerToCurrentUnicodeCharacter>=pointerToLastUnicodeCharacter)
+			    {
+			    OstTrace0( TRACE_DUMP, DUP14_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE, "EPanicPointerPastUpperLimit13" );
+			    }
 			__ASSERT_DEBUG(pointerToCurrentUnicodeCharacter<pointerToLastUnicodeCharacter, Panic(EPanicPointerPastUpperLimit13));
 			if (nextInputCharacterCode==KNoConversionAvailable)
 				{
 				++pointerToCurrentUnicodeCharacter;
 				}
 			}
+		if (pointerToCurrentUnicodeCharacter>pointerToLastUnicodeCharacter)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP15_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE, "EPanicPointerPastUpperLimit14" );
+		    }
 		__ASSERT_DEBUG(pointerToCurrentUnicodeCharacter<=pointerToLastUnicodeCharacter, Panic(EPanicPointerPastUpperLimit14));
 		if (nextInputCharacterCode==KNoConversionAvailable)
 			{
@@ -2585,6 +2806,10 @@
 			}
 		}
 end:
+    if (pointerToCurrentUnicodeCharacter<aUnicode.Ptr())
+        {
+        OstTrace0( TRACE_DUMP, DUP16_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE, "EPanicPointerPastLowerLimit1" );
+        }
 	__ASSERT_DEBUG(pointerToCurrentUnicodeCharacter>=aUnicode.Ptr(), Panic(EPanicPointerPastLowerLimit1));
 	if ((pointerToCurrentUnicodeCharacter<=aUnicode.Ptr()) && (aOutputConversionFlags&EOutputConversionFlagInputIsTruncated) && (~aInputConversionFlags&EInputConversionFlagAllowTruncatedInputNotEvenPartlyConsumable))
 		{
@@ -2620,7 +2845,7 @@
 foreign characters. If an endian-ness for foreign characters is specified 
 in aConversionData, then that is used instead and the value of 
 aDefaultEndiannessOfForeignCharacters is ignored.
-@param aUnicode On return, contains the text converted into Unicode.
+@param aUnicode On return, contains the text converted into Unicode.
 @param aForeign The non-Unicode source text to be converted.
 @param aNumberOfUnconvertibleCharacters On return, contains the number of 
 characters in aForeign which were not converted. Characters which cannot be 
@@ -2675,7 +2900,7 @@
 foreign characters. If an endian-ness for foreign characters is specified 
 in aConversionData, then that is used instead and the value of 
 aDefaultEndiannessOfForeignCharacters is ignored.
-@param aUnicode On return, contains the text converted into Unicode.
+@param aUnicode On return, contains the text converted into Unicode.
 @param aForeign The non-Unicode source text to be converted.
 @param aNumberOfUnconvertibleCharacters On return, contains the number of 
 characters in aForeign which were not converted. Characters which cannot be 
@@ -2730,25 +2955,49 @@
 		}
 	const TUint8* pointerToCurrentForeignByte=aForeign.Ptr();
 	const TUint8* const pointerToLastForeignByte=pointerToCurrentForeignByte+(aForeign.Length()-1);
+	if (aConversionData.iForeignVariableByteData.iNumberOfRanges<=0)
+	    {
+	    OstTrace0( TRACE_DUMP, CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE, "EPanicBadNumberOfRanges2" );
+	    }
 	__ASSERT_DEBUG(aConversionData.iForeignVariableByteData.iNumberOfRanges>0, Panic(EPanicBadNumberOfRanges2));
 	const SCnvConversionData::SVariableByteData::SRange* const foreignVariableByteData_firstRange=aConversionData.iForeignVariableByteData.iRangeArray;
 	const SCnvConversionData::SVariableByteData::SRange* const foreignVariableByteData_lastRange=foreignVariableByteData_firstRange+(aConversionData.iForeignVariableByteData.iNumberOfRanges-1);
+	if (aConversionData.iForeignToUnicodeData.iNumberOfRanges<=0)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE, "EPanicBadNumberOfRanges3" );
+	    }
 	__ASSERT_DEBUG(aConversionData.iForeignToUnicodeData.iNumberOfRanges>0, Panic(EPanicBadNumberOfRanges3));
 	const SCnvConversionData::SOneDirectionData::SRange* const oneDirectionData_firstRange=aConversionData.iForeignToUnicodeData.iRangeArray;
 	const SCnvConversionData::SOneDirectionData::SRange* const oneDirectionData_lastRange=oneDirectionData_firstRange+(aConversionData.iForeignToUnicodeData.iNumberOfRanges-1);
 	FOREVER
 		{
+		if (pointerToPreviousUnicodeCharacter>pointerToLastUnicodeCharacter)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP2_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE, "EPanicPointerPastUpperLimit15" );
+		    }
 		__ASSERT_DEBUG(pointerToPreviousUnicodeCharacter<=pointerToLastUnicodeCharacter, Panic(EPanicPointerPastUpperLimit15));
+		if (pointerToCurrentForeignByte>pointerToLastForeignByte)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP3_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE, "EPanicPointerPastUpperLimit16" );
+		    }
 		__ASSERT_DEBUG(pointerToCurrentForeignByte<=pointerToLastForeignByte, Panic(EPanicPointerPastUpperLimit16));
 		TBool stop=EFalse;
 		TUint inputCharacterCode=*pointerToCurrentForeignByte;
 		const SCnvConversionData::SVariableByteData::SRange* foreignVariableByteData_currentRange=foreignVariableByteData_firstRange;
 		FOREVER
 			{
+			if (foreignVariableByteData_currentRange->iNumberOfSubsequentBytes>=sizeof(TUint))
+			    {
+			    OstTrace0( TRACE_DUMP, DUP4_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE, "EPanicBadNumberOfSubsequentBytes" );
+			    }
 			__ASSERT_DEBUG(foreignVariableByteData_currentRange->iNumberOfSubsequentBytes<sizeof(TUint), Panic(EPanicBadNumberOfSubsequentBytes));
 			if ((inputCharacterCode>=foreignVariableByteData_currentRange->iFirstInitialByteValueInRange) && (inputCharacterCode<=foreignVariableByteData_currentRange->iLastInitialByteValueInRange))
 				{
 				const TInt numberOfSubsequentBytes=foreignVariableByteData_currentRange->iNumberOfSubsequentBytes;
+				if (pointerToCurrentForeignByte>pointerToLastForeignByte)
+				    {
+				    OstTrace0( TRACE_DUMP, DUP5_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE, "EPanicPointerPastUpperLimit17" );
+				    }
 				__ASSERT_DEBUG(pointerToCurrentForeignByte<=pointerToLastForeignByte, Panic(EPanicPointerPastUpperLimit17));
 				if (pointerToLastForeignByte-pointerToCurrentForeignByte<numberOfSubsequentBytes)
 					{
@@ -2761,6 +3010,10 @@
 					{
 					for (TInt i=1; i<=numberOfSubsequentBytes; ++i)
 						{
+						if (pointerToCurrentForeignByte>=pointerToLastForeignByte)
+						    {
+						    OstTrace0( TRACE_DUMP, DUP6_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE, "EPanicPointerPastUpperLimit18" );
+						    }
 						__ASSERT_DEBUG(pointerToCurrentForeignByte<pointerToLastForeignByte, Panic(EPanicPointerPastUpperLimit18));
 						++pointerToCurrentForeignByte;
 						TUint currentForeignByte=*pointerToCurrentForeignByte;
@@ -2773,6 +3026,10 @@
 					{
 					for (TInt i=numberOfSubsequentBytes; i>0; --i)
 						{
+						if (pointerToCurrentForeignByte>=pointerToLastForeignByte)
+						    {
+						    OstTrace0( TRACE_DUMP, DUP7_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE, "EPanicPointerPastUpperLimit19" );
+						    }
 						__ASSERT_DEBUG(pointerToCurrentForeignByte<pointerToLastForeignByte, Panic(EPanicPointerPastUpperLimit19));
 						++pointerToCurrentForeignByte;
 						inputCharacterCode<<=8;
@@ -2782,6 +3039,7 @@
 					break;
 #if defined(_DEBUG)
 				default:
+				    OstTrace0( TRACE_DUMP, DUP8_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE, "EPanicBadEndianness2" );
 					Panic(EPanicBadEndianness2);
 					break;
 #endif
@@ -2789,6 +3047,10 @@
 				pointerToCurrentForeignByte-=numberOfSubsequentBytes; // resets pointerToCurrentForeignByte to its value before the loop above
 				break;
 				}
+			if (foreignVariableByteData_currentRange>foreignVariableByteData_lastRange)
+			    {
+			    OstTrace0( TRACE_DUMP, DUP9_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE, "EPanicPointerPastUpperLimit20" );
+			    }
 			__ASSERT_DEBUG(foreignVariableByteData_currentRange<=foreignVariableByteData_lastRange, Panic(EPanicPointerPastUpperLimit20));
 			if (foreignVariableByteData_currentRange>=foreignVariableByteData_lastRange)
 				{
@@ -2809,6 +3071,10 @@
 					break;
 					}
 				}
+			if (oneDirectionData_currentRange>oneDirectionData_lastRange)
+			    {
+			    OstTrace0( TRACE_DUMP, DUP10_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE, "EPanicPointerPastUpperLimit21" );
+			    }
 			__ASSERT_DEBUG(oneDirectionData_currentRange<=oneDirectionData_lastRange, Panic(EPanicPointerPastUpperLimit21));
 			if (oneDirectionData_currentRange>=oneDirectionData_lastRange)
 				{
@@ -2816,6 +3082,10 @@
 				}
 			++oneDirectionData_currentRange;
 			}
+		if (pointerToPreviousUnicodeCharacter>pointerToLastUnicodeCharacter)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP11_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE, "EPanicPointerPastUpperLimit22" );
+		    }
 		__ASSERT_DEBUG(pointerToPreviousUnicodeCharacter<=pointerToLastUnicodeCharacter, Panic(EPanicPointerPastUpperLimit22));
 		if (pointerToPreviousUnicodeCharacter==pointerToLastUnicodeCharacter)
 			{
@@ -2824,6 +3094,10 @@
 		if (outputCharacterCode==KNoConversionAvailable)
 			{
 			outputCharacterCode=0xfffd; // Unicode's "REPLACEMENT CHARACTER"
+			if (aNumberOfUnconvertibleCharacters<0)
+			    {
+			    OstTrace0( TRACE_FATAL, DUP13_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE, "EPanicBadNumberOfUnconvertibleCharacters" );
+			    }
 			__ASSERT_ALWAYS(aNumberOfUnconvertibleCharacters>=0, Panic(EPanicBadNumberOfUnconvertibleCharacters));
 			if (aNumberOfUnconvertibleCharacters<=0)
 				{
@@ -2842,7 +3116,15 @@
 			}
 		else
 			{
+			if (outputCharacterCode>=0x00110000)
+			    {
+			    OstTrace0( TRACE_DUMP, DUP12_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE, "EPanicBadNon16BitCharacterCode2" );
+				}
 			__ASSERT_DEBUG(outputCharacterCode<0x00110000, Panic(EPanicBadNon16BitCharacterCode2));
+			if (pointerToPreviousUnicodeCharacter>pointerToLastUnicodeCharacter)
+			    {
+			    OstTrace0( TRACE_DUMP, DUP14_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE, "EPanicPointerPastUpperLimit23" );
+			    }
 			__ASSERT_DEBUG(pointerToPreviousUnicodeCharacter<=pointerToLastUnicodeCharacter, Panic(EPanicPointerPastUpperLimit23));
 			if (pointerToLastUnicodeCharacter-pointerToPreviousUnicodeCharacter<2)
 				{
@@ -2854,6 +3136,10 @@
 			++pointerToPreviousUnicodeCharacter;
 			*pointerToPreviousUnicodeCharacter=STATIC_CAST(TUint16, (outputCharacterCode&0x000003ff)|0xdc00);
 			}
+		if (pointerToLastForeignByte-pointerToCurrentForeignByte<foreignVariableByteData_currentRange->iNumberOfSubsequentBytes)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP15_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE, "EPanicPointerPastUpperLimit24" );
+		    }
 		__ASSERT_DEBUG(pointerToLastForeignByte-pointerToCurrentForeignByte>=foreignVariableByteData_currentRange->iNumberOfSubsequentBytes, Panic(EPanicPointerPastUpperLimit24));
 		pointerToCurrentForeignByte+=foreignVariableByteData_currentRange->iNumberOfSubsequentBytes;
 		if (pointerToCurrentForeignByte==pointerToLastForeignByte)
@@ -2868,6 +3154,10 @@
 			}
 		}
 end:
+    if (pointerToCurrentForeignByte<aForeign.Ptr())
+        {
+        OstTrace0( TRACE_DUMP, DUP16_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE, "EPanicPointerPastLowerLimit2" );
+        }
 	__ASSERT_DEBUG(pointerToCurrentForeignByte>=aForeign.Ptr(), Panic(EPanicPointerPastLowerLimit2));
 	if ((pointerToCurrentForeignByte<=aForeign.Ptr()) && (aOutputConversionFlags&EOutputConversionFlagInputIsTruncated) && (~aInputConversionFlags&EInputConversionFlagAllowTruncatedInputNotEvenPartlyConsumable))
 		{
@@ -2960,6 +3250,10 @@
 			{
 			for(TInt j = arrayOfCharacterSetsAvailable->Count() - 1; j >= 0; --j)
 				{
+				if ((*arrayOfCharacterSetsAvailable)[j].Identifier() == characterSetIdentifier)
+				    {
+				    OstTrace0( TRACE_DUMP, DUP1_CCNVCHARACTERSETCONVERTER_DOCREATEARRAYOFCHARACTERSETSAVAILABLELC, "EPanicCharacterSetAlreadyAdded" );
+				    }
 				__ASSERT_DEBUG((*arrayOfCharacterSetsAvailable)[j].Identifier() != characterSetIdentifier, Panic(EPanicCharacterSetAlreadyAdded));
 				}
 			}
@@ -2979,6 +3273,10 @@
 			characterSet.iName = implInfo->DisplayName().AllocLC();
 
 			arrayOfCharacterSetsAvailable->AppendL(characterSet);
+			
+			OstTraceDefExt1( OST_TRACE_CATEGORY_PRODUCTION | OST_TRACE_CATEGORY_RND, TRACE_INTERNALS, 
+			            CCNVCHARACTERSETCONVERTER_DOCREATEARRAYOFCHARACTERSETSAVAILABLELC, 
+			             "%S Appended to Character Set Array",  *(characterSet.iName) );
 
 			CleanupStack::Pop(characterSet.iName); //characterSet.iName
 			}
@@ -3093,11 +3391,16 @@
 								const CArrayFix<SCharacterSet>* aArrayOfCharacterSetsAvailable, 
 								RFs& aFileServerSession)
 	{
+    OstTraceExt2( TRACE_DUMP, DUP3_CCNVCHARACTERSETCONVERTER_DOPREPARETOCONVERTTOORFROML, "Prepare to convert aCharacterSetIdentifier(0x%x) in aArrayOfCharacterSetsAvailable(0x%x)", aCharacterSetIdentifier, (unsigned int)aArrayOfCharacterSetsAvailable);
+    
 	//AutoDetectCharacterSetL relies on the fact that this function does not use 
 	//aFileServerSession if aArrayOfCharacterSetsAvailable is *not* NULL and 
 	//if aCharacterSetIdentifier is *not* a data file
 	// aFileServerSession is no longer used load Plugin libraries. ECom framework used instead
-	
+	if (aCharacterSetIdentifier==0)
+	    {
+	    OstTrace0( TRACE_FATAL, CCNVCHARACTERSETCONVERTER_DOPREPARETOCONVERTTOORFROML, "EPanicNullCharacterSetIdentifier3" );
+	    }
 	__ASSERT_ALWAYS(aCharacterSetIdentifier!=0, Panic(EPanicNullCharacterSetIdentifier3));
 	if (iCharacterSetIdentifierOfLoadedConversionData!=aCharacterSetIdentifier)
 		{
@@ -3167,6 +3470,10 @@
 				const SCharacterSet& characterSet=(*aArrayOfCharacterSetsAvailable)[i];
 				if (characterSet.Identifier()==aCharacterSetIdentifier)
 					{
+					if (!characterSet.NameIsFileName())
+					    {
+					    OstTrace0( TRACE_DUMP, DUP1_CCNVCHARACTERSETCONVERTER_DOPREPARETOCONVERTTOORFROML, "EPanicNameIsNotFileName" );
+					    }
 					__ASSERT_DEBUG(characterSet.NameIsFileName(), Panic(EPanicNameIsNotFileName));
 					if (characterSet.FileIsConversionPlugInLibrary())
 						{
@@ -3180,6 +3487,7 @@
 						{
 						//You are here?! This should never happen! Source code here was related to
 						//old type character set converter data!
+						OstTrace0( TRACE_FATAL, DUP2_CCNVCHARACTERSETCONVERTER_DOPREPARETOCONVERTTOORFROML, "EPanicCharacterSetNotPresent" );
  						__ASSERT_ALWAYS(EFalse, Panic(EPanicCharacterSetNotPresent));
 						}
 					break;
@@ -3203,9 +3511,17 @@
 								TInt aNumberOfRanges, 
 								const SCnvConversionData::SOneDirectionData::SRange* aRange)
 	{
+	if ( !((aRange!=NULL) || (aNumberOfRanges==0)) )
+	    {
+	    OstTrace0( TRACE_DUMP, _DELETEONEDIRECTIONDATA, "EPanicBadNumberOfRanges4" );
+	    }
 	__ASSERT_DEBUG((aRange!=NULL) || (aNumberOfRanges==0), Panic(EPanicBadNumberOfRanges4));
 	if (aRange!=NULL)
 		{
+		if (aNumberOfRanges<=0)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP1__DELETEONEDIRECTIONDATA, "EPanicBadNumberOfRanges5" );
+		    }
 		__ASSERT_DEBUG(aNumberOfRanges>0, Panic(EPanicBadNumberOfRanges5));
 		SCnvConversionData::SOneDirectionData::SRange* currentRange=CONST_CAST(SCnvConversionData::SOneDirectionData::SRange*, aRange);
 		const SCnvConversionData::SOneDirectionData::SRange* const lastRange=currentRange+(aNumberOfRanges-1);
@@ -3234,10 +3550,15 @@
 				// fall through
 #if defined(_DEBUG)
 			default:
+			    OstTrace0( TRACE_FATAL, DUP2__DELETEONEDIRECTIONDATA, "EPanicBadAlgorithm2" );
 				Panic(EPanicBadAlgorithm2);
 #endif
 				break;
 				}
+			if (currentRange>lastRange)
+			    {
+			    OstTrace0( TRACE_DUMP, DUP3__DELETEONEDIRECTIONDATA, "EPanicPointerPastUpperLimit25" );
+			    }
 			__ASSERT_DEBUG(currentRange<=lastRange, Panic(EPanicPointerPastUpperLimit25));
 			if (currentRange==lastRange)
 				{
@@ -3280,6 +3601,7 @@
 		return EBigEndian;
 		}
 #if defined(_DEBUG)
+	OstTrace0( TRACE_DUMP, CCNVCHARACTERSETCONVERTER_ENDIANNESSOFFOREIGNCHARACTERS, "EPanicBadEndianness3" );
 	Panic(EPanicBadEndianness3);
 #endif
 	return ELittleEndian; // dummy return to prevent compiler error
@@ -3299,12 +3621,20 @@
 EXPORT_C CCnvCharacterSetConverter::TArrayOfAscendingIndices::TAppendResult 
 CCnvCharacterSetConverter::TArrayOfAscendingIndices::AppendIndex(TInt aIndex)
  	{
+ 	if ( aIndex<0 )
+ 	    {
+ 	    OstTrace1( TRACE_DUMP, DUP2_TARRAYOFASCENDINGINDICES_APPENDINDEX, "Bad index in TArrayOfAscendingIndices::AppendIndex;aIndex=%d", aIndex );    
+ 	    }
 	__ASSERT_DEBUG(aIndex>=0, Panic(EPanicBadIndex));
 	const TInt lengthOfArrayOfIndices=iArrayOfIndices.Length();
 	if ((aIndex>STATIC_CAST(TInt, KMaxTUint16)) || (lengthOfArrayOfIndices==iArrayOfIndices.MaxLength()))
 		{
 		return EAppendFailed;
 		}
+	if ( (lengthOfArrayOfIndices!=0) && (iArrayOfIndices[lengthOfArrayOfIndices-1]>=aIndex))
+	    {
+	    OstTrace1( TRACE_DUMP, DUP1_TARRAYOFASCENDINGINDICES_APPENDINDEX, "Duplicate Index Or Not Ascending in TArrayOfAscendingIndices::AppendIndex;aIndex=%d", aIndex );
+	    }
 	__ASSERT_DEBUG((lengthOfArrayOfIndices==0) || (iArrayOfIndices[lengthOfArrayOfIndices-1]<aIndex), Panic(EPanicDuplicateIndexOrNotAscending));
 	iArrayOfIndices.Append(aIndex);
 	return EAppendSuccessful;
@@ -3330,6 +3660,10 @@
 */
 EXPORT_C void CCnvCharacterSetConverter::SetMaxCacheSize(TInt aSize)
     {
+    if ( aSize < CCharsetCnvCache::KMinCacheSize )
+        {
+        OstTrace1( TRACE_FATAL, CCNVCHARACTERSETCONVERTER_SETMAXCACHESIZE, "Parameter aSize < KMinCacheSize in CCnvCharacterSetConverter::SetMaxCacheSize;aSize=%d", aSize );
+        }
     __ASSERT_ALWAYS(aSize >= CCharsetCnvCache::KMinCacheSize, User::Invariant());
     iCharsetCnvCache->SetMaxSize(aSize);
     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/charconvfw/charconv_fw/traces/OstTraceDefinitions.h	Tue Jul 06 16:23:19 2010 +0300
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef __OSTTRACEDEFINITIONS_H__
+#define __OSTTRACEDEFINITIONS_H__
+// OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler
+// REMOVE BEFORE CHECK-IN TO VERSION CONTROL
+// #define OST_TRACE_COMPILER_IN_USE
+#include <opensystemtrace.h>
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/charconvfw/charconv_fw/traces/fixed_id.definitions	Tue Jul 06 16:23:19 2010 +0300
@@ -0,0 +1,123 @@
+/*
+* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt.
+[GROUP]TRACE_DUMP=0x89
+[GROUP]TRACE_FATAL=0x81
+[GROUP]TRACE_INTERNALS=0x88
+[TRACE]TRACE_DUMP[0x89]_CCHARSETCNVCACHE_CCHARSETCNVCACHE=0xa
+[TRACE]TRACE_DUMP[0x89]_CCNVCHARACTERSETCONVERTER_AUTODETECTCHARSETL=0xb
+[TRACE]TRACE_DUMP[0x89]_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE=0x1e
+[TRACE]TRACE_DUMP[0x89]_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE=0x2f
+[TRACE]TRACE_DUMP[0x89]_CCNVCHARACTERSETCONVERTER_ENDIANNESSOFFOREIGNCHARACTERS=0x45
+[TRACE]TRACE_DUMP[0x89]_CFILEREADER_READBUFFERL=0x8
+[TRACE]TRACE_DUMP[0x89]_CFILEREADER_REALLOCATETHEBUFFER=0x5
+[TRACE]TRACE_DUMP[0x89]_CFILEREADER_SKIPL=0x7
+[TRACE]TRACE_DUMP[0x89]_DUP10_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE=0x28
+[TRACE]TRACE_DUMP[0x89]_DUP10_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE=0x39
+[TRACE]TRACE_DUMP[0x89]_DUP10__OUTPUTCHARACTERCODE=0x18
+[TRACE]TRACE_DUMP[0x89]_DUP11_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE=0x29
+[TRACE]TRACE_DUMP[0x89]_DUP11_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE=0x3a
+[TRACE]TRACE_DUMP[0x89]_DUP11__OUTPUTCHARACTERCODE=0x19
+[TRACE]TRACE_DUMP[0x89]_DUP12_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE=0x2a
+[TRACE]TRACE_DUMP[0x89]_DUP12_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE=0x3b
+[TRACE]TRACE_DUMP[0x89]_DUP13_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE=0x2b
+[TRACE]TRACE_DUMP[0x89]_DUP14_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE=0x2c
+[TRACE]TRACE_DUMP[0x89]_DUP14_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE=0x3c
+[TRACE]TRACE_DUMP[0x89]_DUP15_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE=0x2d
+[TRACE]TRACE_DUMP[0x89]_DUP15_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE=0x3d
+[TRACE]TRACE_DUMP[0x89]_DUP16_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE=0x2e
+[TRACE]TRACE_DUMP[0x89]_DUP16_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE=0x3e
+[TRACE]TRACE_DUMP[0x89]_DUP1_CCNVCHARACTERSETCONVERTER_AUTODETECTCHARSETL=0xd
+[TRACE]TRACE_DUMP[0x89]_DUP1_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE=0x1f
+[TRACE]TRACE_DUMP[0x89]_DUP1_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE=0x30
+[TRACE]TRACE_DUMP[0x89]_DUP1_CCNVCHARACTERSETCONVERTER_DOCREATEARRAYOFCHARACTERSETSAVAILABLELC=0x3f
+[TRACE]TRACE_DUMP[0x89]_DUP1_CCNVCHARACTERSETCONVERTER_DOPREPARETOCONVERTTOORFROML=0x41
+[TRACE]TRACE_DUMP[0x89]_DUP1_CFILEREADER_REALLOCATETHEBUFFER=0x6
+[TRACE]TRACE_DUMP[0x89]_DUP1_TARRAYOFASCENDINGINDICES_APPENDINDEX=0x47
+[TRACE]TRACE_DUMP[0x89]_DUP1_TTLSDATA_CHARACTERSETCONVERTERISBEINGDESTROYED=0x3
+[TRACE]TRACE_DUMP[0x89]_DUP1__CONVERTSTOFOREIGNCHARACTERSET=0x1b
+[TRACE]TRACE_DUMP[0x89]_DUP1__DELETEONEDIRECTIONDATA=0x43
+[TRACE]TRACE_DUMP[0x89]_DUP1__OUTPUTCHARACTERCODE=0xf
+[TRACE]TRACE_DUMP[0x89]_DUP2_CCNVCHARACTERSETCONVERTER_AUTODETECTCHARSETL=0xc
+[TRACE]TRACE_DUMP[0x89]_DUP2_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE=0x20
+[TRACE]TRACE_DUMP[0x89]_DUP2_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE=0x31
+[TRACE]TRACE_DUMP[0x89]_DUP2_CFILEREADER_READBUFFERL=0x9
+[TRACE]TRACE_DUMP[0x89]_DUP2_TARRAYOFASCENDINGINDICES_APPENDINDEX=0x46
+[TRACE]TRACE_DUMP[0x89]_DUP2__CONVERTSTOFOREIGNCHARACTERSET=0x1c
+[TRACE]TRACE_DUMP[0x89]_DUP2__OUTPUTCHARACTERCODE=0x10
+[TRACE]TRACE_DUMP[0x89]_DUP3_CCNVCHARACTERSETCONVERTER_AUTODETECTCHARSETL=0xe
+[TRACE]TRACE_DUMP[0x89]_DUP3_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE=0x21
+[TRACE]TRACE_DUMP[0x89]_DUP3_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE=0x32
+[TRACE]TRACE_DUMP[0x89]_DUP3_CCNVCHARACTERSETCONVERTER_DOPREPARETOCONVERTTOORFROML=0x40
+[TRACE]TRACE_DUMP[0x89]_DUP3__CONVERTSTOFOREIGNCHARACTERSET=0x1d
+[TRACE]TRACE_DUMP[0x89]_DUP3__DELETEONEDIRECTIONDATA=0x44
+[TRACE]TRACE_DUMP[0x89]_DUP3__OUTPUTCHARACTERCODE=0x11
+[TRACE]TRACE_DUMP[0x89]_DUP4_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE=0x22
+[TRACE]TRACE_DUMP[0x89]_DUP4_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE=0x33
+[TRACE]TRACE_DUMP[0x89]_DUP4__OUTPUTCHARACTERCODE=0x12
+[TRACE]TRACE_DUMP[0x89]_DUP5_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE=0x23
+[TRACE]TRACE_DUMP[0x89]_DUP5_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE=0x34
+[TRACE]TRACE_DUMP[0x89]_DUP5__OUTPUTCHARACTERCODE=0x13
+[TRACE]TRACE_DUMP[0x89]_DUP6_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE=0x24
+[TRACE]TRACE_DUMP[0x89]_DUP6_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE=0x35
+[TRACE]TRACE_DUMP[0x89]_DUP6__OUTPUTCHARACTERCODE=0x14
+[TRACE]TRACE_DUMP[0x89]_DUP7_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE=0x25
+[TRACE]TRACE_DUMP[0x89]_DUP7_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE=0x36
+[TRACE]TRACE_DUMP[0x89]_DUP7__OUTPUTCHARACTERCODE=0x15
+[TRACE]TRACE_DUMP[0x89]_DUP8_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE=0x26
+[TRACE]TRACE_DUMP[0x89]_DUP8_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE=0x37
+[TRACE]TRACE_DUMP[0x89]_DUP8__OUTPUTCHARACTERCODE=0x16
+[TRACE]TRACE_DUMP[0x89]_DUP9_CCNVCHARACTERSETCONVERTER_DOCONVERTFROMUNICODE=0x27
+[TRACE]TRACE_DUMP[0x89]_DUP9_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE=0x38
+[TRACE]TRACE_DUMP[0x89]_DUP9__OUTPUTCHARACTERCODE=0x17
+[TRACE]TRACE_DUMP[0x89]_TTLSDATA_CHARACTERSETCONVERTERISBEINGDESTROYED=0x2
+[TRACE]TRACE_DUMP[0x89]__CONVERTSTOFOREIGNCHARACTERSET=0x1a
+[TRACE]TRACE_DUMP[0x89]__DELETEONEDIRECTIONDATA=0x42
+[TRACE]TRACE_DUMP[0x89]__ISBUILTINCHARACTERSET=0x1
+[TRACE]TRACE_DUMP[0x89]__NONSHARABLE_CLASS=0x4
+[TRACE]TRACE_FATAL[0x81]_CCHARSETCNVCACHE_CONVERTER=0x10
+[TRACE]TRACE_FATAL[0x81]_CCHARSETCNVCACHE_GETCONVERTERL=0xf
+[TRACE]TRACE_FATAL[0x81]_CCHARSETCNVCACHE_REMOVELAST=0x12
+[TRACE]TRACE_FATAL[0x81]_CCHARSETCNVCACHE_SETMAXSIZE=0x11
+[TRACE]TRACE_FATAL[0x81]_CCNVCHARACTERSETCONVERTER_CONVERTFROMUNICODE=0x16
+[TRACE]TRACE_FATAL[0x81]_CCNVCHARACTERSETCONVERTER_CONVERTTOUNICODE=0x17
+[TRACE]TRACE_FATAL[0x81]_CCNVCHARACTERSETCONVERTER_DOPREPARETOCONVERTTOORFROML=0x1b
+[TRACE]TRACE_FATAL[0x81]_CCNVCHARACTERSETCONVERTER_PREPARETOCONVERTTOORFROML=0x13
+[TRACE]TRACE_FATAL[0x81]_CCNVCHARACTERSETCONVERTER_SETDEFAULTENDIANNESSOFFOREIGNCHARACTERS=0x14
+[TRACE]TRACE_FATAL[0x81]_CCNVCHARACTERSETCONVERTER_SETDOWNGRADEFOREXOTICLINETERMINATINGCHARACTERS=0x15
+[TRACE]TRACE_FATAL[0x81]_CCNVCHARACTERSETCONVERTER_SETMAXCACHESIZE=0x1e
+[TRACE]TRACE_FATAL[0x81]_CFILEREADER_CONSTRUCTFORNONROMFILEL=0xe
+[TRACE]TRACE_FATAL[0x81]_CFILEREADER_READPOSITIVEINTEGERCOMPACTED30L=0x5
+[TRACE]TRACE_FATAL[0x81]_CFILEREADER_READSIGNEDINTEGERCOMPACTED29L=0x8
+[TRACE]TRACE_FATAL[0x81]_CFILEREADER_READUINT16L=0x4
+[TRACE]TRACE_FATAL[0x81]_DUP13_CCNVCHARACTERSETCONVERTER_DOCONVERTTOUNICODE=0x1a
+[TRACE]TRACE_FATAL[0x81]_DUP1_CCNVCHARACTERSETCONVERTER_CONVERTTOUNICODE=0x18
+[TRACE]TRACE_FATAL[0x81]_DUP1_CFILEREADER_CONSTRUCTFORNONROMFILEL=0xd
+[TRACE]TRACE_FATAL[0x81]_DUP1_CFILEREADER_READBUFFERL=0xb
+[TRACE]TRACE_FATAL[0x81]_DUP1_CFILEREADER_READPOSITIVEINTEGERCOMPACTED30L=0x6
+[TRACE]TRACE_FATAL[0x81]_DUP1_CFILEREADER_READSIGNEDINTEGERCOMPACTED29L=0x9
+[TRACE]TRACE_FATAL[0x81]_DUP1_TTLSDATA_SETCURRENTCHARACTERSETCONVERTER=0x1
+[TRACE]TRACE_FATAL[0x81]_DUP2_CCNVCHARACTERSETCONVERTER_DOPREPARETOCONVERTTOORFROML=0x1c
+[TRACE]TRACE_FATAL[0x81]_DUP2_CFILEREADER_READPOSITIVEINTEGERCOMPACTED30L=0x7
+[TRACE]TRACE_FATAL[0x81]_DUP2_CFILEREADER_READSIGNEDINTEGERCOMPACTED29L=0xa
+[TRACE]TRACE_FATAL[0x81]_DUP2_CFILEREADER_SKIPL=0x3
+[TRACE]TRACE_FATAL[0x81]_DUP2__DELETEONEDIRECTIONDATA=0x1d
+[TRACE]TRACE_FATAL[0x81]_DUP3_CFILEREADER_READBUFFERL=0xc
+[TRACE]TRACE_FATAL[0x81]_TTLSDATA_SETCURRENTCHARACTERSETCONVERTER=0x2
+[TRACE]TRACE_FATAL[0x81]__OUTPUTCHARACTERCODE=0x19
+[TRACE]TRACE_INTERNALS[0x88]_CCNVCHARACTERSETCONVERTER_DOCREATEARRAYOFCHARACTERSETSAVAILABLELC=0x1
--- a/charconvfw/charconvplugins/group/Win1250.mmp	Fri Jun 11 15:33:54 2010 +0300
+++ b/charconvfw/charconvplugins/group/Win1250.mmp	Tue Jul 06 16:23:19 2010 +0300
@@ -38,7 +38,7 @@
 
 SOURCEPATH		../resource
 
-Start resource       win1250.rss
+Start resource       Win1250.rss
 Targetpath           /resource/charconv
 End
 
--- a/charconvfw/charconvplugins/src/plugins/EUCJP_PACKED_2.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/charconvfw/charconvplugins/src/plugins/EUCJP_PACKED_2.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -283,6 +283,7 @@
         const TDesC16& aUnicode,
         CCnvCharacterSetConverter::TArrayOfAscendingIndices& aIndicesOfUnconvertibleCharacters)
     {
+    TInt ret = KErrNone;
     RArray<CnvUtilities::SCharacterSet> characterSets;
     if ( FeatureManager::FeatureSupported(KFeatureIdJapanesePicto) )
         {      
@@ -291,19 +292,19 @@
         characterSet.iConversionData=&CnvJisRoman::ConversionData();
         characterSet.iConvertFromIntermediateBufferInPlace=DummyConvertFromIntermediateBufferInPlace;
         characterSet.iEscapeSequence=&KNullDesC8;
-        characterSets.Append(characterSet);
+        ret |= characterSets.Append(characterSet);
         characterSet.iConversionData=&CnvJisX0208::ConversionData();
         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromJisX0208ToEucJpPackedInPlace;
         characterSet.iEscapeSequence=&KNullDesC8;
-        characterSets.Append(characterSet);
+        ret |= characterSets.Append(characterSet);
         characterSet.iConversionData=&CnvHalfWidthKatakana8::ConversionData();
         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromHalfWidthKatakana8ToEucJpPackedInPlace;
         characterSet.iEscapeSequence=&KNullDesC8;
-        characterSets.Append(characterSet);
+        ret |= characterSets.Append(characterSet);
         characterSet.iConversionData=&CnvJisX0212::ConversionData();
         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromJisX0212ToEucJpPackedInPlace;
         characterSet.iEscapeSequence=&KNullDesC8;
-        characterSets.Append(characterSet);
+        ret |= characterSets.Append(characterSet);
 
         SetCharacterSetsForPictograph(characterSets, ECharsetEucJp);
         }
@@ -313,20 +314,21 @@
         characterSet.iConversionData=&CnvJisRoman::ConversionData();
         characterSet.iConvertFromIntermediateBufferInPlace=DummyConvertFromIntermediateBufferInPlace;
         characterSet.iEscapeSequence=&KNullDesC8;
-        characterSets.Append(characterSet);
+        ret |= characterSets.Append(characterSet);
         characterSet.iConversionData=&CnvJisX0208::ConversionData();
         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromJisX0208ToEucJpPackedInPlace;
         characterSet.iEscapeSequence=&KNullDesC8;
-        characterSets.Append(characterSet);
+        ret |= characterSets.Append(characterSet);
         characterSet.iConversionData=&CnvHalfWidthKatakana8::ConversionData();
         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromHalfWidthKatakana8ToEucJpPackedInPlace;
         characterSet.iEscapeSequence=&KNullDesC8;
-        characterSets.Append(characterSet);
+        ret |= characterSets.Append(characterSet);
         characterSet.iConversionData=&CnvJisX0212::ConversionData();
         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromJisX0212ToEucJpPackedInPlace;
         characterSet.iEscapeSequence=&KNullDesC8;
-        characterSets.Append(characterSet);
+        ret |= characterSets.Append(characterSet);
         }
+    __ASSERT_DEBUG(!ret, User::Panic(_L("RArray append failure"), ret));
     TInt unconvert = CnvUtilities::ConvertFromUnicode(aDefaultEndiannessOfForeignCharacters, aReplacementForUnconvertibleUnicodeCharacters, aForeign, aUnicode, aIndicesOfUnconvertibleCharacters, characterSets.Array());
 
     characterSets.Close();
@@ -575,6 +577,7 @@
         TInt& aNumberOfUnconvertibleCharacters,
         TInt& aIndexOfFirstByteOfFirstUnconvertibleCharacter)
     {
+    TInt ret =KErrNone;
     RArray<CnvUtilities::SMethod> methods;
     if ( FeatureManager::FeatureSupported(KFeatureIdJapanesePicto) )
         {      
@@ -585,25 +588,25 @@
         method.iConversionData=&CnvJisRoman::ConversionData();
         method.iNumberOfBytesPerCharacter=1;
         method.iNumberOfCoreBytesPerCharacter=1;
-        methods.Append(method);
+        ret |= methods.Append(method);
         method.iNumberOfBytesAbleToConvert=NumberOfBytesAbleToConvertToJisX0208;
         method.iConvertToIntermediateBufferInPlace=ConvertToJisX0208FromEucJpPackedInPlace;
         method.iConversionData=&CnvJisX0208::ConversionData();
         method.iNumberOfBytesPerCharacter=2;
         method.iNumberOfCoreBytesPerCharacter=2;
-        methods.Append(method);
+        ret |= methods.Append(method);
         method.iNumberOfBytesAbleToConvert=NumberOfBytesAbleToConvertToHalfWidthKatakana8;
         method.iConvertToIntermediateBufferInPlace=ConvertToHalfWidthKatakana8FromEucJpPackedInPlace;
         method.iConversionData=&CnvHalfWidthKatakana8::ConversionData();
         method.iNumberOfBytesPerCharacter=2;
         method.iNumberOfCoreBytesPerCharacter=1;
-        methods.Append(method);
+        ret |= methods.Append(method);
         method.iNumberOfBytesAbleToConvert=NumberOfBytesAbleToConvertToJisX0212;
         method.iConvertToIntermediateBufferInPlace=ConvertToJisX0212FromEucJpPackedInPlace;
         method.iConversionData=&CnvJisX0212::ConversionData();
         method.iNumberOfBytesPerCharacter=3;
         method.iNumberOfCoreBytesPerCharacter=2;
-        methods.Append(method);
+        ret |= methods.Append(method);
         }
     else
         {
@@ -613,26 +616,27 @@
         method.iConversionData=&CnvJisRoman::ConversionData();
         method.iNumberOfBytesPerCharacter=1;
         method.iNumberOfCoreBytesPerCharacter=1;
-        methods.Append(method);
+        ret |= methods.Append(method);
         method.iNumberOfBytesAbleToConvert=NumberOfBytesAbleToConvertToJisX0208;
         method.iConvertToIntermediateBufferInPlace=ConvertToJisX0208FromEucJpPackedInPlace;
         method.iConversionData=&CnvJisX0208::ConversionData();
         method.iNumberOfBytesPerCharacter=2;
         method.iNumberOfCoreBytesPerCharacter=2;
-        methods.Append(method);
+        ret |= methods.Append(method);
         method.iNumberOfBytesAbleToConvert=NumberOfBytesAbleToConvertToHalfWidthKatakana8;
         method.iConvertToIntermediateBufferInPlace=ConvertToHalfWidthKatakana8FromEucJpPackedInPlace;
         method.iConversionData=&CnvHalfWidthKatakana8::ConversionData();
         method.iNumberOfBytesPerCharacter=2;
         method.iNumberOfCoreBytesPerCharacter=1;
-        methods.Append(method);
+        ret |= methods.Append(method);
         method.iNumberOfBytesAbleToConvert=NumberOfBytesAbleToConvertToJisX0212;
         method.iConvertToIntermediateBufferInPlace=ConvertToJisX0212FromEucJpPackedInPlace;
         method.iConversionData=&CnvJisX0212::ConversionData();
         method.iNumberOfBytesPerCharacter=3;
         method.iNumberOfCoreBytesPerCharacter=2;
-        methods.Append(method);
+        ret |= methods.Append(method);
         }
+    __ASSERT_DEBUG(!ret, User::Panic(_L("RArray append failure"), ret));
     TInt unconvert = CnvUtilities::ConvertToUnicodeFromHeterogeneousForeign(aDefaultEndiannessOfForeignCharacters, aUnicode, aForeign, aNumberOfUnconvertibleCharacters, aIndexOfFirstByteOfFirstUnconvertibleCharacter, methods.Array());
 
     // The following is specific impelementation for brower.
--- a/charconvfw/charconvplugins/src/plugins/ISO2022JP1_2.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/charconvfw/charconvplugins/src/plugins/ISO2022JP1_2.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -105,6 +105,7 @@
 		const TDesC16& aUnicode, 
 		CCnvCharacterSetConverter::TArrayOfAscendingIndices& aIndicesOfUnconvertibleCharacters)
 	{
+    TInt ret = KErrNone;
     RArray<CnvUtilities::SCharacterSet> characterSets;
     if ( FeatureManager::FeatureSupported(KFeatureIdJapanesePicto) )
         {        
@@ -112,19 +113,19 @@
         characterSet.iConversionData=&CnvJisRoman::ConversionData();
         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromJisRomanToJisInPlace;
         characterSet.iEscapeSequence=&KLit8EscapeSequenceForJisRoman;
-        characterSets.Append(characterSet);
+        ret |= characterSets.Append(characterSet);
         characterSet.iConversionData=&CCnvCharacterSetConverter::AsciiConversionData();
         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromAsciiToJisInPlace;
         characterSet.iEscapeSequence=&KLit8EscapeSequenceForAscii;
-        characterSets.Append(characterSet);
+        ret |= characterSets.Append(characterSet);
         characterSet.iConversionData=&CnvJisX0208::ConversionData();
         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromJisX0208ToJisInPlace;
         characterSet.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_1983;
-        characterSets.Append(characterSet);
+        ret |= characterSets.Append(characterSet);
         characterSet.iConversionData=&CnvJisX0212::ConversionData();
         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromJisX0212ToJisInPlace;
         characterSet.iEscapeSequence=&KLit8EscapeSequenceForJisX0212_1990;
-        characterSets.Append(characterSet);
+        ret |= characterSets.Append(characterSet);
 
         SetCharacterSetsForPictograph(characterSets);
         }
@@ -134,20 +135,21 @@
 	    characterSet.iConversionData=&CnvJisRoman::ConversionData();
 	    characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromJisRomanToJisInPlace;
 	    characterSet.iEscapeSequence=&KLit8EscapeSequenceForJisRoman;
-        characterSets.Append(characterSet);
+	    ret |= characterSets.Append(characterSet);
     	characterSet.iConversionData=&CCnvCharacterSetConverter::AsciiConversionData();
     	characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromAsciiToJisInPlace;
     	characterSet.iEscapeSequence=&KLit8EscapeSequenceForAscii;
-        characterSets.Append(characterSet);
+    	ret |= characterSets.Append(characterSet);
     	characterSet.iConversionData=&CnvJisX0208::ConversionData();
     	characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromJisX0208ToJisInPlace;
     	characterSet.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_1983;
-        characterSets.Append(characterSet);
+    	ret |= characterSets.Append(characterSet);
     	characterSet.iConversionData=&CnvJisX0212::ConversionData();
     	characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromJisX0212ToJisInPlace;
     	characterSet.iEscapeSequence=&KLit8EscapeSequenceForJisX0212_1990;
-        characterSets.Append(characterSet);
+    	ret |= characterSets.Append(characterSet);
         }
+    __ASSERT_DEBUG(!ret, User::Panic(_L("RArray append failure"), ret));
 	TUint notUsed;
 	TUint inputConversionFlags=CCnvCharacterSetConverter::EInputConversionFlagMustEndInDefaultCharacterSet;
     TInt unconvert = CnvUtilities::ConvertFromUnicode(aDefaultEndiannessOfForeignCharacters, aReplacementForUnconvertibleUnicodeCharacters, aForeign, aUnicode, aIndicesOfUnconvertibleCharacters, 
--- a/charconvfw/charconvplugins/src/plugins/ISO2022JP_2.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/charconvfw/charconvplugins/src/plugins/ISO2022JP_2.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -284,6 +284,7 @@
         const TDesC16& aUnicode, 
         CCnvCharacterSetConverter::TArrayOfAscendingIndices& aIndicesOfUnconvertibleCharacters)
     {
+    TInt ret = KErrNone;
     RArray<CnvUtilities::SCharacterSet> characterSets;
     if ( FeatureManager::FeatureSupported(KFeatureIdJapanesePicto) )
         {        
@@ -291,19 +292,19 @@
         characterSet.iConversionData=&CnvJisRoman::ConversionData();
         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromJisRomanToJisInPlace;
         characterSet.iEscapeSequence=&KLit8EscapeSequenceForJisRoman;
-        characterSets.Append(characterSet);
+        ret |= characterSets.Append(characterSet);
         characterSet.iConversionData=&CCnvCharacterSetConverter::AsciiConversionData();
         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromAsciiToJisInPlace;
         characterSet.iEscapeSequence=&KLit8EscapeSequenceForAscii;
-        characterSets.Append(characterSet);
+        ret |= characterSets.Append(characterSet);
         characterSet.iConversionData=&CnvJisX0208::ConversionData();
         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromJisX0208ToJisInPlace;
         characterSet.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_1983;
-        characterSets.Append(characterSet);
+        ret |= characterSets.Append(characterSet);
         characterSet.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_1983;
         characterSet.iConversionData=&CnvJisBase::HalfWidthKatakana7ConversionData();
         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromHalfKatakanaToFullKatakana;
-        characterSets.Append(characterSet);
+        ret |= characterSets.Append(characterSet);
 
         SetCharacterSetsForPictograph(characterSets);
         }
@@ -313,20 +314,21 @@
         characterSet.iConversionData=&CCnvCharacterSetConverter::AsciiConversionData();
         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromAsciiToJisInPlace;
         characterSet.iEscapeSequence=&KLit8EscapeSequenceForAscii;
-        characterSets.Append(characterSet);
+        ret |= characterSets.Append(characterSet);
         characterSet.iConversionData=&CnvJisRoman::ConversionData();
         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromJisRomanToJisInPlace;
         characterSet.iEscapeSequence=&KLit8EscapeSequenceForJisRoman;
-        characterSets.Append(characterSet);
+        ret |= characterSets.Append(characterSet);
         characterSet.iConversionData=&CnvJisX0208::ConversionData();
         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromJisX0208ToJisInPlace;
         characterSet.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_1983;
-        characterSets.Append(characterSet);
+        ret |= characterSets.Append(characterSet);
         characterSet.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_1983;
         characterSet.iConversionData=&CnvJisBase::HalfWidthKatakana7ConversionData();
         characterSet.iConvertFromIntermediateBufferInPlace=ConvertFromHalfKatakanaToFullKatakana;
-        characterSets.Append(characterSet);
+        ret |= characterSets.Append(characterSet);
         }
+    __ASSERT_DEBUG(!ret, User::Panic(_L("RArray append failure"), ret));
     TUint notUsed;
 //S60 30    TUint inputConversionFlags=CCnvCharacterSetConverter::EInputConversionFlagMustEndInDefaultCharacterSet;
     TUint inputConversionFlags=CCnvCharacterSetConverter::EInputConversionFlagMustEndInDefaultCharacterSet |
--- a/charconvfw/charconvplugins/src/plugins/iscii.cpp	Fri Jun 11 15:33:54 2010 +0300
+++ b/charconvfw/charconvplugins/src/plugins/iscii.cpp	Tue Jul 06 16:23:19 2010 +0300
@@ -420,7 +420,8 @@
 
 LOCAL_C void FindAndModifyBuffer(TDes8& aModifyBuffer)
 {
-	RArray<TPtrC8> searchBuffer;
+	TInt ret = KErrNone;
+    RArray<TPtrC8> searchBuffer;
 	RArray<TPtrC8> replaceBuffer;
 	
 	//If the passed buffer contains the replacement buffer,
@@ -428,61 +429,62 @@
 	//buffer rather it should get converted to replacement for
 	//unconvertible character.
 	
-	searchBuffer.Append(KReplacementForExplicitHalant().Right(1));
-	searchBuffer.Append(KReplacementForSoftHalant().Right(1));
-	searchBuffer.Append(KReplacementForOm().Right(1));
-	searchBuffer.Append(KReplacementForAvagraha().Right(1));
+	ret |= searchBuffer.Append(KReplacementForExplicitHalant().Right(1));
+	ret |= searchBuffer.Append(KReplacementForSoftHalant().Right(1));
+	ret |= searchBuffer.Append(KReplacementForOm().Right(1));
+	ret |= searchBuffer.Append(KReplacementForAvagraha().Right(1));
 	
-	searchBuffer.Append(KReplacementForVocalicRr().Right(1));
-	searchBuffer.Append(KReplacementForVocalicLl().Right(1));
-	searchBuffer.Append(KReplacementForVocalicLSign().Right(1));
-	searchBuffer.Append(KReplacementForVocalicLlSign().Right(1));
-	searchBuffer.Append(KReplacementForVocalicL().Right(1));
-	searchBuffer.Append(KReplacementForVocalicRrSign().Right(1));
+	ret |= searchBuffer.Append(KReplacementForVocalicRr().Right(1));
+	ret |= searchBuffer.Append(KReplacementForVocalicLl().Right(1));
+	ret |= searchBuffer.Append(KReplacementForVocalicLSign().Right(1));
+	ret |= searchBuffer.Append(KReplacementForVocalicLlSign().Right(1));
+	ret |= searchBuffer.Append(KReplacementForVocalicL().Right(1));
+	ret |= searchBuffer.Append(KReplacementForVocalicRrSign().Right(1));
 	
 	//All normal search buffers
-	searchBuffer.Append(KExplicitHalant().Mid(0));
-	searchBuffer.Append(KSoftHalant().Mid(0));
-	searchBuffer.Append(KOm().Mid(0));
-	searchBuffer.Append(KAvagraha().Mid(0));
+	ret |= searchBuffer.Append(KExplicitHalant().Mid(0));
+	ret |= searchBuffer.Append(KSoftHalant().Mid(0));
+	ret |= searchBuffer.Append(KOm().Mid(0));
+	ret |= searchBuffer.Append(KAvagraha().Mid(0));
 	
-	searchBuffer.Append(KVocalicRr().Mid(0));
-	searchBuffer.Append(KVocalicLl().Mid(0));
-	searchBuffer.Append(KVocalicLSign().Mid(0));
-	searchBuffer.Append(KVocalicLlSign().Mid(0));
-	searchBuffer.Append(KVocalicL().Mid(0));
-	searchBuffer.Append(KVocalicRrSign().Mid(0));
+	ret |= searchBuffer.Append(KVocalicRr().Mid(0));
+	ret |= searchBuffer.Append(KVocalicLl().Mid(0));
+	ret |= searchBuffer.Append(KVocalicLSign().Mid(0));
+	ret |= searchBuffer.Append(KVocalicLlSign().Mid(0));
+	ret |= searchBuffer.Append(KVocalicL().Mid(0));
+	ret |= searchBuffer.Append(KVocalicRrSign().Mid(0));
 	
 	//The replacement buffer for the odd cases to restrict the 
 	//replacement buffers not to get converted to the corresponding 
 	//unicode buffer
 	
-	replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0));
-	replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0));
-	replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0));
-	replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0));
+	ret |= replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0));
+	ret |= replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0));
+	ret |= replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0));
+	ret |= replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0));
 	
-	replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0));
-	replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0));
-	replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0));
-	replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0));
-	replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0));
-	replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0));
+	ret |= replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0));
+	ret |= replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0));
+	ret |= replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0));
+	ret |= replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0));
+	ret |= replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0));
+	ret |= replaceBuffer.Append(KIsciiUnconvertibleCharacter().Mid(0));
 	
 	//All normal replace buffers		
-	replaceBuffer.Append(KReplacementForExplicitHalant().Mid(0));
-	replaceBuffer.Append(KReplacementForSoftHalant().Mid(0));
-	replaceBuffer.Append(KReplacementForOm().Mid(0));
-	replaceBuffer.Append(KReplacementForAvagraha().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForExplicitHalant().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForSoftHalant().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForOm().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForAvagraha().Mid(0));
 	
 	
-	replaceBuffer.Append(KReplacementForVocalicRr().Mid(0));
-	replaceBuffer.Append(KReplacementForVocalicLl().Mid(0));
-	replaceBuffer.Append(KReplacementForVocalicLSign().Mid(0));
-	replaceBuffer.Append(KReplacementForVocalicLlSign().Mid(0));
-	replaceBuffer.Append(KReplacementForVocalicL().Mid(0));
-	replaceBuffer.Append(KReplacementForVocalicRrSign().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForVocalicRr().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForVocalicLl().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForVocalicLSign().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForVocalicLlSign().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForVocalicL().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForVocalicRrSign().Mid(0));
 	
+	__ASSERT_DEBUG(!ret, User::Panic(_L("RArray append failure"), ret));
 			
 	for(TInt counter=0;counter<searchBuffer.Count();counter++)
 	{
@@ -552,32 +554,35 @@
 
 LOCAL_C void NormalizeReturnValue(TUint& aReturnValue,const TDesC8& aBuffer)
 {
-	RArray<TPtrC8> searchBuffer;
+	TInt ret = KErrNone;
+    RArray<TPtrC8> searchBuffer;
 	RArray<TPtrC8> replaceBuffer;
 	
-	searchBuffer.Append(KExplicitHalant().Mid(0));
-	searchBuffer.Append(KSoftHalant().Mid(0));
-	searchBuffer.Append(KOm().Mid(0));
-	searchBuffer.Append(KAvagraha().Mid(0));
+	ret |= searchBuffer.Append(KExplicitHalant().Mid(0));
+	ret |= searchBuffer.Append(KSoftHalant().Mid(0));
+	ret |= searchBuffer.Append(KOm().Mid(0));
+	ret |= searchBuffer.Append(KAvagraha().Mid(0));
 	
-	searchBuffer.Append(KVocalicRr().Mid(0));
-	searchBuffer.Append(KVocalicLl().Mid(0));
-	searchBuffer.Append(KVocalicLSign().Mid(0));
-	searchBuffer.Append(KVocalicLlSign().Mid(0));
-	searchBuffer.Append(KVocalicL().Mid(0));
-	searchBuffer.Append(KVocalicRrSign().Mid(0));
+	ret |= searchBuffer.Append(KVocalicRr().Mid(0));
+	ret |= searchBuffer.Append(KVocalicLl().Mid(0));
+	ret |= searchBuffer.Append(KVocalicLSign().Mid(0));
+	ret |= searchBuffer.Append(KVocalicLlSign().Mid(0));
+	ret |= searchBuffer.Append(KVocalicL().Mid(0));
+	ret |= searchBuffer.Append(KVocalicRrSign().Mid(0));
 	
-	replaceBuffer.Append(KReplacementForExplicitHalant().Mid(0));
-	replaceBuffer.Append(KReplacementForSoftHalant().Mid(0));
-	replaceBuffer.Append(KReplacementForOm().Mid(0));
-	replaceBuffer.Append(KReplacementForAvagraha().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForExplicitHalant().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForSoftHalant().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForOm().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForAvagraha().Mid(0));
 	
-	replaceBuffer.Append(KReplacementForVocalicRr().Mid(0));
-	replaceBuffer.Append(KReplacementForVocalicLl().Mid(0));
-	replaceBuffer.Append(KReplacementForVocalicLSign().Mid(0));
-	replaceBuffer.Append(KReplacementForVocalicLlSign().Mid(0));
-	replaceBuffer.Append(KReplacementForVocalicL().Mid(0));
-	replaceBuffer.Append(KReplacementForVocalicRrSign().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForVocalicRr().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForVocalicLl().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForVocalicLSign().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForVocalicLlSign().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForVocalicL().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForVocalicRrSign().Mid(0));
+	
+	__ASSERT_DEBUG(!ret, User::Panic(_L("RArray append failure"), ret));
 	
 	DoNormalizeReturnValue(aReturnValue,aBuffer,searchBuffer,replaceBuffer);
 	searchBuffer.Reset();
@@ -683,10 +688,14 @@
 		return EFalse;
 	if(anIsciiBuffer[anIsciiBuffer.Length()-1] == 0xEF)
 	return ETrue;
-	searchBuffer.Append(KSoftHalant().Mid(0));
-	searchBuffer.Append(KOm().Mid(0));
-	searchBuffer.Append(KAvagraha().Mid(0));
-	searchBuffer.Append(KExplicitHalant().Mid(0));
+	
+	TInt appendret = KErrNone;
+	appendret |= searchBuffer.Append(KSoftHalant().Mid(0));
+	appendret |= searchBuffer.Append(KOm().Mid(0));
+	appendret |= searchBuffer.Append(KAvagraha().Mid(0));
+	appendret |= searchBuffer.Append(KExplicitHalant().Mid(0));
+	__ASSERT_DEBUG(!appendret, User::Panic(_L("RArray append failure"), appendret));
+	
 	TBool ret = EFalse;
 	TBool isNotTruncated =EFalse;
 	
@@ -1195,15 +1204,18 @@
 	RArray<TPtrC8> searchBuffer;
 	RArray<TPtrC8> replaceBuffer;
 	
-	searchBuffer.Append(KExplicitHalant().Mid(0));
-	searchBuffer.Append(KSoftHalant().Mid(0));
-	searchBuffer.Append(KOm().Mid(0));
-	searchBuffer.Append(KAvagraha().Mid(0));
+	TInt ret = KErrNone;
+	ret |= searchBuffer.Append(KExplicitHalant().Mid(0));
+	ret |= searchBuffer.Append(KSoftHalant().Mid(0));
+	ret |= searchBuffer.Append(KOm().Mid(0));
+	ret |= searchBuffer.Append(KAvagraha().Mid(0));
 	
-	replaceBuffer.Append(KReplacementForExplicitHalant().Mid(0));
-	replaceBuffer.Append(KReplacementForSoftHalant().Mid(0));
-	replaceBuffer.Append(KReplacementForOm().Mid(0));
-	replaceBuffer.Append(KReplacementForAvagraha().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForExplicitHalant().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForSoftHalant().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForOm().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForAvagraha().Mid(0));
+	
+	__ASSERT_DEBUG(!ret, User::Panic(_L("RArray append failure"), ret));
 	
 	for(TInt counter=0;counter<searchBuffer.Count();counter++)
 	{
@@ -1275,16 +1287,19 @@
 {
 	RArray<TPtrC8> searchBuffer;
 	RArray<TPtrC8> replaceBuffer;
+	TInt ret =KErrNone;
+	ret |= searchBuffer.Append(KExplicitHalant().Mid(0));
+	ret |= searchBuffer.Append(KSoftHalant().Mid(0));
+	ret |= searchBuffer.Append(KOm().Mid(0));
+	ret |= searchBuffer.Append(KAvagraha().Mid(0));
 	
-	searchBuffer.Append(KExplicitHalant().Mid(0));
-	searchBuffer.Append(KSoftHalant().Mid(0));
-	searchBuffer.Append(KOm().Mid(0));
-	searchBuffer.Append(KAvagraha().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForExplicitHalant().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForSoftHalant().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForOm().Mid(0));
+	ret |= replaceBuffer.Append(KReplacementForAvagraha().Mid(0));
 	
-	replaceBuffer.Append(KReplacementForExplicitHalant().Mid(0));
-	replaceBuffer.Append(KReplacementForSoftHalant().Mid(0));
-	replaceBuffer.Append(KReplacementForOm().Mid(0));
-	replaceBuffer.Append(KReplacementForAvagraha().Mid(0));
+	__ASSERT_DEBUG(!ret, User::Panic(_L("RArray append failure"), ret));
+	
 	DoNormalizeReturnValue(aReturnValue,aBuffer,searchBuffer,replaceBuffer);
 	searchBuffer.Reset();
 	replaceBuffer.Reset();
@@ -1389,10 +1404,14 @@
 		return EFalse;
 	if(anIsciiBuffer[anIsciiBuffer.Length()-1] == 0xEF)
 	return ETrue;
-	searchBuffer.Append(KSoftHalant().Mid(0));
-	searchBuffer.Append(KOm().Mid(0));
-	searchBuffer.Append(KAvagraha().Mid(0));
-	searchBuffer.Append(KExplicitHalant().Mid(0));
+	
+	TInt appendret = KErrNone;
+	appendret |= searchBuffer.Append(KSoftHalant().Mid(0));
+	appendret |= searchBuffer.Append(KOm().Mid(0));
+	appendret |= searchBuffer.Append(KAvagraha().Mid(0));
+	appendret |= searchBuffer.Append(KExplicitHalant().Mid(0));
+	__ASSERT_DEBUG(!ret, User::Panic(_L("RArray append failure"), ret));
+	
 	TBool ret = EFalse;
 	TBool isNotTruncated =EFalse;
 	
--- a/charconvfw/charconvplugins/src/shared/CnvPictographShared.cpp	Fri Jun 11 15:33:54 2010 +0300
+++ b/charconvfw/charconvplugins/src/shared/CnvPictographShared.cpp	Tue Jul 06 16:23:19 2010 +0300
@@ -205,6 +205,7 @@
 void CnvPictographShared::SetMethodsForPictograph(
         RArray<CnvUtilities::SMethod>& aArrayOfMethods, TOriginalCharset aOriginalCharset)
     {
+    TInt ret = KErrNone;
     CnvUtilities::SMethod method;
     switch (aOriginalCharset)
         {
@@ -217,7 +218,7 @@
                 &CnvShiftJisDirectmap::ConversionData();
             method.iNumberOfBytesPerCharacter = 2;
             method.iNumberOfCoreBytesPerCharacter = 2;
-            aArrayOfMethods.Append(method);
+            ret |= aArrayOfMethods.Append(method);
             break;
         case ECharsetEucJp:
             method.iNumberOfBytesAbleToConvert =
@@ -228,7 +229,7 @@
                 &CnvShiftJisDirectmap::ConversionData();
             method.iNumberOfBytesPerCharacter = 2;
             method.iNumberOfCoreBytesPerCharacter = 2;
-            aArrayOfMethods.Append(method);
+            ret |= aArrayOfMethods.Append(method);
             method.iNumberOfBytesAbleToConvert =
                 CnvPictographShared::NumberOfBytesAbleToConvertToEucJpDirectMap2;
             method.iConvertToIntermediateBufferInPlace =
@@ -237,12 +238,12 @@
                 &CnvShiftJisDirectmap::ConversionData();
             method.iNumberOfBytesPerCharacter = 3;
             method.iNumberOfCoreBytesPerCharacter = 2;
-            aArrayOfMethods.Append(method);
+            ret |= aArrayOfMethods.Append(method);
             break;
         default:
             break;
         }
-
+    __ASSERT_DEBUG(!ret, User::Panic(_L("RArray append failure"), ret));
     // SAMPLE CODE
     // If this module needs to support escape sequence pictograph,
     // Remove the comment from the following code.
@@ -269,6 +270,7 @@
         RArray<CnvUtilities::SCharacterSet>& aArrayOfStates,
         TOriginalCharset aOriginalCharset)
     {
+    TInt ret = KErrNone;
     CnvUtilities::SCharacterSet characterSet;
     switch (aOriginalCharset)
         {
@@ -279,7 +281,7 @@
             characterSet.iConvertFromIntermediateBufferInPlace =
                 DummyConvertFromIntermediateBufferInPlace;
             characterSet.iEscapeSequence = &KNullDesC8;
-            aArrayOfStates.Append(characterSet);
+            ret |= aArrayOfStates.Append(characterSet);
             break;
         case ECharsetEucJp:
             // Append the character set for pictograph1
@@ -287,18 +289,19 @@
             characterSet.iConvertFromIntermediateBufferInPlace =
                 ConvertFromPictogaphToEucJpDirectmapInPlace;
             characterSet.iEscapeSequence = &KNullDesC8;
-            aArrayOfStates.Append(characterSet);
+            ret |= aArrayOfStates.Append(characterSet);
 
             // Append the character set for pictograph2
             characterSet.iConversionData = &CnvShiftJisDirectmap::ConversionData();
             characterSet.iConvertFromIntermediateBufferInPlace =
                 ConvertFromPictogaphToEucJpDirectmapInPlace;
             characterSet.iEscapeSequence = &KNullDesC8;
-            aArrayOfStates.Append(characterSet);
+            ret |= aArrayOfStates.Append(characterSet);
             break;
         default:
             break;
         }
+    __ASSERT_DEBUG(!ret, User::Panic(_L("RArray append failure"), ret));
     }
 
 // -----------------------------------------------------------------------------
--- a/charconvfw/charconvplugins/src/shared/JISBASE_SHARED_2.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/charconvfw/charconvplugins/src/shared/JISBASE_SHARED_2.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -161,6 +161,7 @@
 
 EXPORT_C TInt CnvJisBase::ConvertToUnicode(CCnvCharacterSetConverter::TEndianness aDefaultEndiannessOfForeignCharacters, TDes16& aUnicode, const TDesC8& aForeign, TInt& aState, TInt& aNumberOfUnconvertibleCharacters, TInt& aIndexOfFirstByteOfFirstUnconvertibleCharacter)
 	{
+    TInt ret =KErrNone;
     TBool pictographsSupported = FeatureManager::FeatureSupported(KFeatureIdJapanesePicto);
     RArray<CnvUtilities::SState> states;
     if ( pictographsSupported )
@@ -169,60 +170,62 @@
         CnvUtilities::SState state;
         state.iEscapeSequence=&KLit8EscapeSequenceForJisRoman; // Jis-Roman is the default state, so it must come first in the array
         state.iConversionData=&CnvJisRoman::ConversionData();
-        states.Append(state);
+        ret |= states.Append(state);
         state.iEscapeSequence=&KLit8EscapeSequenceForJisRomanIncorrect;
         state.iConversionData=&CnvJisRoman::ConversionData();
-        states.Append(state);
+        ret |= states.Append(state);
         state.iEscapeSequence=&KLit8EscapeSequenceForAscii;
         state.iConversionData=&CCnvCharacterSetConverter::AsciiConversionData();
-        states.Append(state);
+        ret |= states.Append(state);
     
         SetStatesForPictograph(states);
 
         state.iEscapeSequence=&KLit8EscapeSequenceForHalfWidthKatakana;
         state.iConversionData=&halfWidthKatakana7ConversionData;
-        states.Append(state);
+        ret |= states.Append(state);
         state.iEscapeSequence=&KLit8EscapeSequenceForJisC6226_1978;
         state.iConversionData=&CnvJisX0208::ConversionData();
-        states.Append(state);
+        ret |= states.Append(state);
         state.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_1983;
         state.iConversionData=&CnvJisX0208::ConversionData();
-        states.Append(state);
+        ret |= states.Append(state);
         state.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_199x;
         state.iConversionData=&CnvJisX0208::ConversionData();
-        states.Append(state);
+        ret |= states.Append(state);
         state.iEscapeSequence=&KLit8EscapeSequenceForJisX0212_1990;
         state.iConversionData=&CnvJisX0212::ConversionData();
-        states.Append(state);
+        ret |= states.Append(state);
         }
     else
         {            
         CnvUtilities::SState state;
     	state.iEscapeSequence=&KLit8EscapeSequenceForJisRoman; // Jis-Roman is the default state, so it must come first in the array
     	state.iConversionData=&CnvJisRoman::ConversionData();
-        states.Append(state);
+    	ret |= states.Append(state);
         state.iEscapeSequence=&KLit8EscapeSequenceForJisRomanIncorrect;
     	state.iConversionData=&CnvJisRoman::ConversionData();	
-        states.Append(state);
+    	ret |= states.Append(state);
     	state.iEscapeSequence=&KLit8EscapeSequenceForAscii;
     	state.iConversionData=&CCnvCharacterSetConverter::AsciiConversionData();
-        states.Append(state);
+    	ret |= states.Append(state);
     	state.iEscapeSequence=&KLit8EscapeSequenceForHalfWidthKatakana;
     	state.iConversionData=&halfWidthKatakana7ConversionData;
-        states.Append(state);
+    	ret |= states.Append(state);
     	state.iEscapeSequence=&KLit8EscapeSequenceForJisC6226_1978;
     	state.iConversionData=&CnvJisX0208::ConversionData();
-        states.Append(state);
+    	ret |= states.Append(state);
     	state.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_1983;
     	state.iConversionData=&CnvJisX0208::ConversionData();
-        states.Append(state);
+    	ret |= states.Append(state);
     	state.iEscapeSequence=&KLit8EscapeSequenceForJisX0208_199x;
     	state.iConversionData=&CnvJisX0208::ConversionData();
-        states.Append(state);
+    	ret |= states.Append(state);
     	state.iEscapeSequence=&KLit8EscapeSequenceForJisX0212_1990;
     	state.iConversionData=&CnvJisX0212::ConversionData();
-        states.Append(state);
+    	ret |= states.Append(state);
         }
+    __ASSERT_DEBUG(!ret, User::Panic(_L("RArray append failure"), ret));
+    
 	const TArray<CnvUtilities::SState> arrayOfStates(states.Array());
 	aUnicode.SetLength(0);
 	const TUint8* const pointerToFirstByte=aForeign.Ptr();
--- a/fontservices/fontstore/group/FNTSTORE.MMP	Fri Jun 11 15:33:54 2010 +0300
+++ b/fontservices/fontstore/group/FNTSTORE.MMP	Tue Jul 06 16:23:19 2010 +0300
@@ -36,7 +36,7 @@
 // MAY BE NEEDED IN THE FUTURE
 // OPTION CW -w off
 
-USERINCLUDE      ../inc
+USERINCLUDE      ../inc ../traces
 
 
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
--- a/fontservices/fontstore/group/FntstoreTest.iby	Fri Jun 11 15:33:54 2010 +0300
+++ b/fontservices/fontstore/group/FntstoreTest.iby	Tue Jul 06 16:23:19 2010 +0300
@@ -49,6 +49,7 @@
 data=DATAZ_\fntstoretest\fntstoretest_T_LinkedFontUpdateInitial.script	\fntstoretest\fntstoretest_T_LinkedFontUpdateInitial.script
 data=DATAZ_\fntstoretest\fntstoretest_T_LinkedFontUpdateStage1.script	\fntstoretest\fntstoretest_T_LinkedFontUpdateStage1.script
 data=DATAZ_\fntstoretest\fntstoretest_T_LinkedFontUpdateStage2.script	\fntstoretest\fntstoretest_T_LinkedFontUpdateStage2.script
+data=DATAZ_\fntstoretest\fntstoretest_T_Cache.script			\fntstoretest\fntstoretest_T_Cache.script
 data=DATAZ_\fntstoretest\fntstoretest_T_FontSessionCache.script			\fntstoretest\fntstoretest_T_FontSessionCache.script
 
 // FntStore test code - TFntStoreServer.exe needs to be copied into \sys\bin\ and set as data so it will be copied to the c: drive and we can change the capabilities of the .exe
--- a/fontservices/fontstore/group/TFntStoreServer.mmp	Fri Jun 11 15:33:54 2010 +0300
+++ b/fontservices/fontstore/group/TFntStoreServer.mmp	Tue Jul 06 16:23:19 2010 +0300
@@ -32,7 +32,7 @@
 
 userinclude     ../../../../graphics/fbs/fontandbitmapserver/inc
 userinclude     ../../../../graphics/graphicstest/graphicstestharness/inc
-userinclude     ../tfs ../inc ../src
+userinclude     ../tfs ../inc ../src ../traces
 APP_LAYER_SYSTEMINCLUDE 
 OS_LAYER_LIBC_SYSTEMINCLUDE 
 
--- a/fontservices/fontstore/src/FNTBODY.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/fontservices/fontstore/src/FNTBODY.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -21,6 +21,12 @@
 #include "FNTBODY.H"
 #include <graphics/openfontconstants.h>
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "FNTBODYTraces.h"
+#endif
+
+
 CFontStoreFile::CFontStoreFile()
  :	iCollectionUid(KNullUid),
 	iUsageCount(1),
@@ -272,7 +278,11 @@
 
 const TBitmapFontCharacterMetrics* TCharacterMetricsTable::Metric(TInt aIndex) const
 	{
-	__ASSERT_DEBUG((aIndex >= 0) && (aIndex <= iNumberOfMetrics), Panic(EFntMetricsIndexOutOfBounds));
+	if ((aIndex < 0) || (aIndex > iNumberOfMetrics))
+	    {
+	    OstTraceExt2( TRACE_FATAL, TCHARACTERMETRICSTABLE_METRIC, "TCharacterMetricsTable::Metric, aIndex=%d, iNumberOfMetrics=%d, Panic(EFntMetricsIndexOutOfBounds)", aIndex, iNumberOfMetrics);
+	    __ASSERT_DEBUG(0, Panic(EFntMetricsIndexOutOfBounds));
+	    }
     // Sometimes the start ptr is to a metrics heap item and sometimes it points into a ROM file
     if (iMetricsOnHeap)
         {
--- a/fontservices/fontstore/src/FNTSTORE.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/fontservices/fontstore/src/FNTSTORE.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -35,6 +35,12 @@
 #include <graphics/openfontrasterizer.h>
 #include <graphics/openfontconstants.h>
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "FNTSTORETraces.h"
+#endif
+
+
 static const TUint32 KOutlineGlyphIdHashMask = 0x0000ffff;
 static const TUint32 KOutlineFileUidHashMask = 0x00ff0000;
 static const TUint32 KOutlineFaceIndexHashMask = 0x0f000000;
@@ -1060,6 +1066,7 @@
 		if (err == KErrNone)
 			{
 			aOpenFont->SetShaper(shaper);
+			OstTrace0( TRACE_IMPORTANT, CBITMAPFONT_INSTALLOPENFONTSHAPER, "A shaper is installed" );
 			break;
 			}
 		}
@@ -1079,7 +1086,11 @@
 		//delete any cache entry that is not referenced at all
 		TInt ret=OpenFont()->DecrementCachedRefCount(aSessionHandle,aHeader);
 		//panic in debug mode if trying to delete something that is not there.
-		__ASSERT_DEBUG(ret==KErrNone || ret==KErrNotFound, User::Invariant());
+		if ((ret != KErrNone) && (ret != KErrNotFound))
+		    {
+		    OstTrace1( TRACE_FATAL, CBITMAPFONT_DELETESHAPE, "OpenFont()->DecrementCachedRefCount() return %d, Invariant", ret);
+		    __ASSERT_DEBUG(0, User::Invariant());
+		    }
 		}
 	}
 
@@ -1104,7 +1115,11 @@
 CFontBitmap* CBitmapFont::FontBitmap() const
 /** This member is private and not intended for use. */
 	{
-    __ASSERT_ALWAYS(!IsOpenFont(),Panic(EFntTypefaceHasNoFontBitmaps));
+	if (IsOpenFont())
+	    {
+	    OstTrace0( TRACE_FATAL, CBITMAPFONT_FONTBITMAP, "Panic(EFntTypefaceHasNoFontBitmaps)" );
+	    __ASSERT_ALWAYS(0, Panic(EFntTypefaceHasNoFontBitmaps));
+	    }
     if(iFontBitmapOffset)
         return reinterpret_cast<CFontBitmap*>(reinterpret_cast<TInt>(this)+iFontBitmapOffset);
     else
@@ -2326,9 +2341,7 @@
 	User::LeaveIfError(aFile.Read(aDes, aLength));
 	if (aDes.Length() != aLength)
 		{
-#ifdef _DEBUG
-		RDebug::Print(_L("EOF reading structure from font file\n"));
-#endif
+		OstTrace0( TRACE_DUMP, _READFROMFILEL, "EOF reading structure from font file, Leave(KErrCorrupt)" );
 		User::Leave(KErrCorrupt);
 		}
 	}
@@ -2343,10 +2356,8 @@
 		// must be ASCII character between 32 & 126 inclusive (per Apple's TTF specification document)
 		if ( (temp < 32) || (temp > 126) )
 			{
+			OstTrace1( TRACE_DUMP, _TTFTABLETAGFROMBUFFERL, "invalid ASCII character (0x%x) in ttf table tag, Leave(KErrCorrupt)", temp);
 			User::Leave(KErrCorrupt);
-#ifdef _DEBUG
-			RDebug::Print(_L("invalid ASCII character (0x%x) in ttf table tag\n"), temp);
-#endif
 			}
 		value = (value << 8) | temp;
 		}
@@ -2357,10 +2368,7 @@
 */
 void CFontStore::SanityCheckForTtfL(RFile& aFontFile, TUint aFontFileSize, TBool aStrictChecking)
 	{
-#if defined(_DEBUG)
-	RDebug::Print(_L("TTF File Size is %u (0x%x) bytes\n"), aFontFileSize, aFontFileSize);
-#endif
-
+	OstTraceExt2( TRACE_DUMP, CFONTSTORE_SANITYCHECKFORTTFL, "TTF File Size is %u (0x%x) bytes", aFontFileSize, aFontFileSize );
 	// check the Offset Table at the start of the file
 	TBuf8<16>	fileBuffer;
 
@@ -2374,9 +2382,7 @@
 
 	if ( (numTables == 0) || (numTables & 0xF0000000) || (tableStart > aFontFileSize) )
 		{
-#ifdef _DEBUG
-		RDebug::Print(_L("# of tables (%i) in ttf is invalid\n"), numTables);
-#endif
+		OstTrace1( TRACE_DUMP, DUP1_CFONTSTORE_SANITYCHECKFORTTFL, "# of tables (%d) in ttf is invalid, Leave(KErrCorrupt)", numTables );
 		User::Leave(KErrCorrupt);
 		}
 
@@ -2393,10 +2399,8 @@
 	if ( (searchRange < 16) || (entrySelector > 24)
 		|| (aStrictChecking && (rangeShift != ( (numTables << 4) - searchRange )) ) )
 		{
-#ifdef _DEBUG
-		RDebug::Print(_L("searchRange (0x%x), entrySelector (0x%x) or rangeShift (0x%x) invalid for numTables (%i)\n"), 
-			searchRange, entrySelector, rangeShift, numTables);
-#endif
+		OstTraceExt4( TRACE_DUMP, DUP2_CFONTSTORE_SANITYCHECKFORTTFL, "searchRange (0x%x), entrySelector (0x%x) or rangeShift (0x%x) invalid for numTables (%d), Leave(KErrCorrupt)", 
+		        searchRange, entrySelector, rangeShift, numTables );
 		User::Leave(KErrCorrupt);
 		}
 
@@ -2404,9 +2408,8 @@
 	TUint exp = 1 << entrySelector;		// log to exponent
 	if ( (numTables < exp) || (numTables > (exp << 1)) )
 		{
-#ifdef _DEBUG
-		RDebug::Print(_L("entrySelector (0x%x) wrong for numTables(%i)\n"), entrySelector, numTables);
-#endif
+		OstTraceExt2( TRACE_DUMP, DUP3_CFONTSTORE_SANITYCHECKFORTTFL, "entrySelector (0x%x) wrong for numTables(%d), Leave(KErrCorrupt)", 
+		        entrySelector, numTables );
 		User::Leave(KErrCorrupt);
 		}
 
@@ -2433,10 +2436,8 @@
 		// table Tags must be unique & in order
 		if (tableTag <= lastTableTag)
 			{
-#ifdef _DEBUG
-			RDebug::Print(_L("ttf table tag ('%c%c%c%c') is out of order\n"), 
-				tableTag >> 24, (tableTag >> 16) & 0x7F, (tableTag >> 8) & 0x7F, tableTag & 0x7F);
-#endif
+			OstTraceExt4( TRACE_DUMP, DUP4_CFONTSTORE_SANITYCHECKFORTTFL, "ttf table tag ('%c%c%c%c') is out of order, Leave(KErrCorrupt)",
+			        tableTag >> 24, (tableTag >> 16) & 0x7F, (tableTag >> 8) & 0x7F, tableTag & 0x7F);
 			User::Leave(KErrCorrupt);
 			}
 
@@ -2446,9 +2447,8 @@
 		TInt end = length + offset;
 		if ( (offset & 3) || (offset < tableStart) || (length == 0) || (end < offset) || (end > aFontFileSize))
 			{
-#ifdef _DEBUG
-			RDebug::Print(_L("offset (0x%x) or length (0x%x) are bad\n"), offset, length);
-#endif		
+			OstTraceExt2( TRACE_DUMP, DUP5_CFONTSTORE_SANITYCHECKFORTTFL, "offset (0x%x) or length (0x%x) are bad, Leave(KErrCorrupt)",
+			        offset, length );
 			User::Leave(KErrCorrupt);
 			}
 
@@ -2469,10 +2469,8 @@
 	// for single font files highestTableEnd & totalFontSize should be the same
 	if (highestTableEnd != totalFontSize)
 		{
-#ifdef _DEBUG
-		RDebug::Print(_L("Total Font Size (0x%x) is different from end of the last table (0x%x)\n"), 
-				highestTableEnd, totalFontSize);
-#endif
+		OstTraceExt2( TRACE_DUMP, DUP6_CFONTSTORE_SANITYCHECKFORTTFL, "Total Font Size (0x%x) is different from end of the last table (0x%x), Leave(KErrCorrupt)",
+		        highestTableEnd, totalFontSize);
 		User::Leave(KErrCorrupt);
 		}
 	}
@@ -3624,7 +3622,9 @@
 			}
 		else
 			{
-			__ASSERT_DEBUG(EFalse, Panic(EFntNoFontFound));
+			OstTraceExt2( TRACE_FATAL, CFONTSTORE_GETNEARESTFONTINPIXELS, "GetNearestOpenFontInPixelsL() return %d, openFont is 0x%x, Panic(EFntNoFontFound)",
+			        error, (unsigned int)openFont);
+			__ASSERT_DEBUG(0, Panic(EFntNoFontFound));
 			return KErrGeneral;
 			}
 		}
@@ -3774,8 +3774,13 @@
 		aTypefaceSupport = *iOpenFontTypefaceSupportList[aTypefaceIndex - iTypefaceList.Count()]->TypefaceSupport();
 		return;
 		}
-
-	__ASSERT_DEBUG((aTypefaceIndex >= 0) && (aTypefaceIndex < iTypefaceList.Count()),Panic(EFntTypefaceIndexOutOfRange));
+	
+	if (!((aTypefaceIndex >= 0) && (aTypefaceIndex < iTypefaceList.Count())))
+	    {
+	    OstTraceExt2( TRACE_FATAL, CFONTSTORE_TYPEFACESUPPORT, "aTypefaceIndex=%d, iTypefaceList.Count()=%d Panic(EFntTypefaceIndexOutOfRange)",
+	            aTypefaceIndex, iTypefaceList.Count());
+	    __ASSERT_DEBUG(0,Panic(EFntTypefaceIndexOutOfRange));
+	    }
 	TTypeface* typeface = iTypefaceList[aTypefaceIndex];
 	aTypefaceSupport.iTypeface = *typeface;
 	TInt count = iTypefaceFontBitmapList.Count();
@@ -3933,7 +3938,11 @@
 			TUid uid;
 			stream >> uid;
  			CFontBitmap* fontbitmap = GetFontBitmapById(uid);
-			__ASSERT_DEBUG(fontbitmap,Panic(EFntFontBitmapNotLoaded));
+ 			if (!fontbitmap)
+ 			    {
+ 			    OstTrace0( TRACE_FATAL, CFONTSTORE_INTERNALIZEFONTSTOREFILEL, "Panic(EFntFontBitmapNotLoaded)" );
+ 			   __ASSERT_DEBUG(0,Panic(EFntFontBitmapNotLoaded));
+ 			    }
 #ifndef _DEBUG
 			User::LeaveIfNull(fontbitmap);
 #endif			
@@ -3992,7 +4001,11 @@
 TTypeface* CFontStore::GetNearestTypeface(const TTypeface& aTypeface) const
 	{
 	TInt index,count = iTypefaceList.Count();
-	__ASSERT_DEBUG(count>0,Panic(EFntNoTypefaces));
+	if (count <= 0)
+	    {
+	    OstTrace1( TRACE_FATAL, CFONTSTORE_GETNEARESTTYPEFACE, "count=%d, Panic(EFntNoTypefaces)", count );
+	    __ASSERT_DEBUG(0,Panic(EFntNoTypefaces));
+	    }
 	for (index=0; (index<count) && aTypeface.iName.CompareF(iTypefaceList[index]->iName); index++)	  
 		{ // tries matching	typeface name
 		}
@@ -4032,14 +4045,22 @@
 	{
 	TTypefaceFontBitmap typefacefontbitmap;
 	TInt count = iTypefaceFontBitmapList.Count();
-	__ASSERT_DEBUG(count > 0, Panic(EFntNoTypefaceFontBitmaps));
+	if (count <= 0)
+	    {
+	    OstTrace1( TRACE_FATAL, CFONTSTORE_GETNEARESTTYPEFACEFONTBITMAP, "count=%d, Panic(EFntNoTypefaceFontBitmaps)", count );
+	    __ASSERT_DEBUG(0, Panic(EFntNoTypefaceFontBitmaps));
+	    }
 	TInt i;
 	TInt j;
 	// Assumes there is at least one fontbitmap per typeface
 	for (i = 0; (i < count) && !(aFontSpecInPixels.iTypeface == *iTypefaceFontBitmapList[i].iTypeface); i++)
 		{  // Finds first fontbitmap with correct typeface
 		}
-	__ASSERT_DEBUG(i < count, Panic(EFntTypefaceHasNoFontBitmaps));
+	if (i >= count)
+	    {
+	    OstTraceExt2( TRACE_FATAL, DUP1_CFONTSTORE_GETNEARESTTYPEFACEFONTBITMAP, "i=%d, count=%d, Panic(EFntTypefaceHasNoFontBitmaps)", i, count );
+	    __ASSERT_DEBUG(i < count, Panic(EFntTypefaceHasNoFontBitmaps));
+	    }
 	TTypeface* typeface = iTypefaceFontBitmapList[i].iTypeface;
 	TInt height = 0;
 	if (aMaxHeight > 0)
@@ -4191,7 +4212,11 @@
 // but with a sanity-check cutoff to round up past two-thirds
 TInt CFontStore::VerticalTwipsToPixels(TInt aTwipsHeight) const
 	{
-	__ASSERT_DEBUG(iKPixelHeightInTwips,Panic(EFntKPixelHeightInTwipsZero));
+	if (!iKPixelHeightInTwips)
+	    {
+	    OstTrace0( TRACE_FATAL, CFONTSTORE_VERTICALTWIPSTOPIXELS, "Panic(EFntKPixelHeightInTwipsZero)" );
+	    __ASSERT_DEBUG(0, Panic(EFntKPixelHeightInTwipsZero));
+	    }
 	return ((aTwipsHeight * 1000) + (iKPixelHeightInTwips / 3)) / iKPixelHeightInTwips;  // Rounds down below two-thirds of a twip
 	}
 
--- a/fontservices/fontstore/src/FNTUTIL.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/fontservices/fontstore/src/FNTUTIL.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -18,9 +18,16 @@
 
 #include "FNTSTD.H"
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "FNTUTILTraces.h"
+#endif
+
+
 GLDEF_C void Panic(TFntStorePanic aPanic)
 	{
 	_LIT(KFntStorePanicCategory,"FntStore");
+	OstTrace1( TRACE_FATAL, _PANIC, "::Panic;aPanic=%x", ( TUint )&( aPanic ) );	
 	User::Panic(KFntStorePanicCategory,aPanic);
 	}
 
--- a/fontservices/fontstore/src/OPENFONT.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/fontservices/fontstore/src/OPENFONT.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -27,6 +27,12 @@
 #include <graphics/openfontrasterizer.h>
 #include <graphics/gdi/glyphsample.h>
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "OPENFONTTraces.h"
+#endif
+
+
 const TInt KSessionCacheEntries = 512;
 const TInt KDefaultSlantFactor = 20480;
 const TInt KOneIn16Dot16FixedPointFormat = 65536;
@@ -1634,8 +1640,16 @@
 
 EXPORT_C void TOpenFontMetrics::SetBaselineCorrection(TInt aBaselineCorrection)
 	{
-	__ASSERT_DEBUG(aBaselineCorrection<(1<<(KBitsForUnderline-1)), Panic(EFntOverFlow));
-	__ASSERT_DEBUG(aBaselineCorrection>(0-(1<<(KBitsForUnderline-1))), Panic(EFntOverFlow));
+	if (aBaselineCorrection >= (1<<(KBitsForUnderline-1)))
+	    {
+	    OstTrace1( TRACE_FATAL, TOPENFONTMETRICS_SETBASELINECORRECTION, "aBaselineCorrection=%d, Panic(EFntOverFlow)", aBaselineCorrection );
+	    __ASSERT_DEBUG(0, Panic(EFntOverFlow));
+	    }
+	if (aBaselineCorrection <= (0-(1<<(KBitsForUnderline-1))))
+	    {
+	    OstTrace1( TRACE_FATAL, DUP1_TOPENFONTMETRICS_SETBASELINECORRECTION, "aBaselineCorrection=%d, Panic(EFntOverFlow)", aBaselineCorrection );
+	    __ASSERT_DEBUG(0, Panic(EFntOverFlow));
+	    }
 	
 	TUint16 value = iBaselineCorrection;
 	value &=~KMaskUnderline; //zero all the underline position bits
@@ -2279,7 +2293,11 @@
 	TInt64 value(aValue);
 	value = (value * aNumerator) / aDenominator;
 	aValue = I64LOW(value);
-	__ASSERT_DEBUG(I64HIGH(value) == 0, Panic(EFntOverFlow));
+	if (I64HIGH(value) != 0)
+	    {
+	    OstTrace1( TRACE_FATAL, TOPENFONTSPEC_APPLYRATIO, "value=%ld, Panic(EFntOverFlow)", value );
+	    __ASSERT_DEBUG(0, Panic(EFntOverFlow));
+	    }
 	return I64HIGH(value) != 0;
 	}
 
--- a/fontservices/fontstore/tfs/T_IsolatedFontStore.cpp	Fri Jun 11 15:33:54 2010 +0300
+++ b/fontservices/fontstore/tfs/T_IsolatedFontStore.cpp	Tue Jul 06 16:23:19 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 1995-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -19,15 +19,21 @@
 #include <graphics/openfontrasterizer.h>
 #include <graphics/openfontconstants.h>
 
-CTIsolatedFontStore::CTIsolatedFontStore()
+CTIsolatedFontStore::CTIsolatedFontStore():iIsHeapOwner(ETrue)
 	{
 	}
 
+CTIsolatedFontStore::CTIsolatedFontStore(RHeap* aHeap):iIsHeapOwner(EFalse),iHeap(aHeap)
+    {
+    }
+
 CTIsolatedFontStore::~CTIsolatedFontStore()
 	{
 	delete iFs;
-	if (iHeap)
-		iHeap->Close();
+	if (iIsHeapOwner && iHeap)
+	    {
+	    iHeap->Close();
+	    }
 	REComSession::FinalClose();
 	}
 
@@ -46,9 +52,27 @@
 	return self;
 	}
 
+CTIsolatedFontStore* CTIsolatedFontStore::NewLC(RHeap * aHeap)
+    {
+    CTIsolatedFontStore* self = new (ELeave)CTIsolatedFontStore(aHeap);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    return self;
+    }
+
+CTIsolatedFontStore* CTIsolatedFontStore::NewL(RHeap * aHeap)
+    {
+    CTIsolatedFontStore* self=CTIsolatedFontStore::NewLC(aHeap);
+    CleanupStack::Pop(); // self;
+    return self;
+    }
+
 void CTIsolatedFontStore::ConstructL()
 	{
-	iHeap = UserHeap::ChunkHeap(NULL,0x10000,0x10000);
+    if(iIsHeapOwner)
+        {
+        iHeap = UserHeap::ChunkHeap(NULL,0x10000,0x10000);
+        }	
 	iFs = CFontStore::NewL(iHeap);
 	}
 
--- a/fontservices/fontstore/tfs/T_IsolatedFontStore.h	Fri Jun 11 15:33:54 2010 +0300
+++ b/fontservices/fontstore/tfs/T_IsolatedFontStore.h	Tue Jul 06 16:23:19 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 1995-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -35,12 +35,16 @@
 
 	static CTIsolatedFontStore* NewL();
 	static CTIsolatedFontStore* NewLC();
+	
+	static CTIsolatedFontStore* NewL(RHeap*);
+	static CTIsolatedFontStore* NewLC(RHeap*);
 
 	void LoadRasterizersL();
 	
 private:
 
 	CTIsolatedFontStore();
+	CTIsolatedFontStore(RHeap* aHeap);
 	void ConstructL();
 	void ListImplementationsWithRetry(TUid& aInterfaceUid, RImplInfoPtrArray &aImplementationArray, TBool aRomOnly);
 	void SafeInstallOfRasterizerL(TUid aInterfaceImplUid);
@@ -49,6 +53,11 @@
 	CFontStore* iFs;
 private:
 	RHeap* iHeap;
+	
+	// Indicate the ownership of iHeap.
+	// ETrue means iHeap is allocated in ConstructL() and owned by CTIsolatedFontStore in current process; 
+    // EFalse means iHeap is a pointer to a heap which is passed in as parameter. Do not take ownership.  
+	TBool  iIsHeapOwner; 
 	};
 
 #endif // TISOLATEDFONTSTORE_H
--- a/fontservices/fontstore/tfs/t_fontsessioncache.cpp	Fri Jun 11 15:33:54 2010 +0300
+++ b/fontservices/fontstore/tfs/t_fontsessioncache.cpp	Tue Jul 06 16:23:19 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -22,33 +22,17 @@
 */
 
 #include "FNTSTORE.H"
-#include "OPENFONT.H"
-#include "FNTBODY.H"
-#include "FNTSTD.H"
 #include "t_fontsessioncache.h"
-#include <hal.h>
-#include <s32file.h>
-#include <graphics/shapeimpl.h>
+#include "T_IsolatedFontStore.h"
 
 _LIT(KWorkerProcess,"tfontsessioncacheproc");
+_LIT(KSharedChunk,"TestSharedChunk_T_FontSessionCache");
 
 const TInt KNumOfProc = 4;
 const TInt KRunningTime = 1000 * 1000 * 5;
 
-class CTFontSessionCache : public CTGraphicsBase
-    {
-public:
-    CTFontSessionCache(CTestStep* aStep);
-    ~CTFontSessionCache();
-    
-    static void TimerCleanup(TAny *);
-protected:
-// From CTGraphicsStep
-    virtual void RunTestCaseL(TInt aCurTestCase);
-private:
-    void TestOpenFontForQtL();
-    void RunMultiWorkerProcessL();
-    };
+//Make sure font is large enough that font and session caches are used sufficiently. 
+const TInt KFontHeight = 250;   
 
 // This class is a data mirror to CBitmapFont in order to check its private 
 // member iOpenFont. It is only used by TestOpenFontForQtL().
@@ -64,16 +48,30 @@
     TUint32 iUniqueFontId;     
     };
 
-class CFbsFontUtil:public CFbsFont
+class CTFontSessionCache : public CTGraphicsBase
     {
 public:
-    static CBitmapFontDummy *getBitmapFont(CFbsFont *aFbsfont)
-        {
-        return reinterpret_cast<CBitmapFontDummy*>(static_cast<CFbsFontUtil*>(aFbsfont)->Address());
-        }
+    CTFontSessionCache(CTestStep* aStep);
+    ~CTFontSessionCache();
+    TInt Base();
+
+protected:
+// From CTGraphicsStep
+    virtual void RunTestCaseL(TInt aCurTestCase);
+    virtual void ConstructL();
+private:
+    void TestOpenFontForQtL();
+    void RunMultiWorkerProcessL();
+    
+    void FlushCaches();
+    
+private:
+    CTIsolatedFontStore *iIFontStore;
+    RHeap   *iSharedHeap;
+    RChunk  iChunk;
+    CFont *iFont;
     };
 
-
 CTFontSessionCache::CTFontSessionCache(CTestStep* aStep)
  :  CTGraphicsBase(aStep)
     {
@@ -82,46 +80,96 @@
 
 CTFontSessionCache::~CTFontSessionCache()
     {
-    // no action needed
+    iIFontStore->iFs->ReleaseFont(iFont);
+    delete iIFontStore;
+    iChunk.Close(); 
+    }
+
+inline TInt CTFontSessionCache::Base() 
+    {
+    return reinterpret_cast<TInt>(iChunk.Base());
     }
 
-void CTFontSessionCache::TimerCleanup(TAny *aTimer)
+void CTFontSessionCache::ConstructL()
     {
-    ((RTimer*)aTimer)->Cancel();
+    User::LeaveIfError(iChunk.CreateGlobal(KNullDesC,500,500));
+    iSharedHeap = UserHeap::ChunkHeap(iChunk,0x10000,0x1000,0x10000,0,EFalse,0);
+    if(iSharedHeap == NULL)
+        {
+        RDebug::Print(_L("iSharedHeap = NULL"));
+        User::Leave(KErrNoMemory);
+        }
+    iIFontStore = CTIsolatedFontStore::NewL(iSharedHeap);
+    iIFontStore->LoadRasterizersL();
+    iIFontStore->iFs->LoadFontsAtStartupL();
+    
+    _LIT(KTypefaceName, "DejaVu Sans Condensed");
+    TFontSpec spec(KTypefaceName, KFontHeight);   
+    
+    TInt ret = iIFontStore->iFs->GetNearestFontToDesignHeightInPixels(iFont,spec);
+    TEST(ret == KErrNone);
+ 
+    }
+
+void CTFontSessionCache::FlushCaches()
+    {
+    TText ch;
+    TOpenFontGlyphData *glyphData = NULL;
+    for (TInt sHandle = 0; sHandle < KNumOfProc; sHandle++)
+        {
+        for (ch = 'A'; ch <= 'z'; ch++)
+            {
+            static_cast<CBitmapFont*> (iFont)->Rasterize(sHandle, ch, glyphData);
+            }
+        }
     }
 
 /**
-Qt needs the last bit of iOpenFont to be set 1 as a workaround to maintain
-its compatibility across difference Symbian OS versions.
+    @SYMTestCaseID
+    TI18N-FNTSTORE-UT--4003
+
+    @SYMTestCaseDesc
+    Qt needs the last bit of iOpenFont to be set 1 as a workaround to maintain
+    its compatibility across difference Symbian OS versions.
+
+    @SYMTestActions
+    1. Get a CBitmapFont in the constructor
+    2. Check the LSB of its iOpenFont by using CBitmapFontDummy
+        
+    @SYMTestExpectedResults
+    Test should pass
 */
+
 void CTFontSessionCache::TestOpenFontForQtL()
-    {
-    _LIT(KTypefaceName, "DejaVu Sans Condensed");
-    TFontSpec spec(KTypefaceName, 15);   
-    CFbsTypefaceStore *tfs = CFbsTypefaceStore::NewL(NULL);
-    
-    CFont* font = NULL;
-    TInt ret = tfs->GetNearestFontToDesignHeightInPixels(font,spec);
-    TEST(ret == KErrNone);
-    
-    CFbsFont *fbs_font = static_cast<CFbsFont*>(font);
-    TEST(reinterpret_cast<TInt>((CFbsFontUtil::getBitmapFont(fbs_font))->iOpenFont) & 1);
-    
-    tfs->ReleaseFont(font);
-    delete tfs;
+    {    
+    TEST(reinterpret_cast<TInt>(reinterpret_cast<CBitmapFontDummy*>(iFont)->iOpenFont) & 1);
     }
 
-/*
- * Launch 4 worker processes running with random latency at beginning. 
- * Each one lasts about 1 sec. Within duration of 5 sec, if one terminates, 
- * re-launch it.
- * 
- */
+/**
+    @SYMTestCaseID
+    TI18N-FNTSTORE-CIT-4002
+
+    @SYMTestCaseDesc
+    This case is to test the safty of actions over the shared heap.
+
+    @SYMTestActions
+    1. Shared heap is initialised in the constructor
+    2. Run rasterizing function to Flush the font caches(glyph tree and session cache).
+    3. Launch KNumOfProc worker processes running with random latency at beginning, which
+       is to seach the cache from different processes. The globle chunk and font handles are
+       passed via process environment variables.
+    4. Each one lasts about 1 sec. Within duration of 5 sec, if one terminates, re-launch it.   
+        
+    @SYMTestExpectedResults
+    Test should pass without any Panic.
+*/
 void CTFontSessionCache::RunMultiWorkerProcessL()
     {
     RProcess ProcArray[KNumOfProc];
     TRequestStatus *completeStatus[KNumOfProc];
 
+    FlushCaches();
+    
     for (TInt i = 0; i < KNumOfProc; i++)
         {                    
         RDebug::Print(_L(">>> Launching %d..."),i);
@@ -129,6 +177,11 @@
         err = ProcArray[i].Create(KWorkerProcess, KNullDesC);
         User::LeaveIfError(err);
 
+        TInt FontOffset = reinterpret_cast<TInt>(iFont) - Base();
+        ProcArray[i].SetParameter(1,iChunk);        
+        ProcArray[i].SetParameter(2,FontOffset);
+        ProcArray[i].SetParameter(3,i);
+        
         completeStatus[i] = new(ELeave) TRequestStatus; 
         CleanupStack::PushL(completeStatus[i]);
         *completeStatus[i] = KRequestPending;
@@ -167,7 +220,12 @@
         TInt err;
         err = ProcArray[i].Create(KWorkerProcess, KNullDesC);
         User::LeaveIfError(err);
-
+        
+        TInt FontOffset = reinterpret_cast<TInt>(iFont) - Base();
+        ProcArray[i].SetParameter(1,iChunk);        
+        ProcArray[i].SetParameter(2,FontOffset);
+        ProcArray[i].SetParameter(3,i);
+        
         //run process 1
         *completeStatus[i] = KRequestPending;
         ProcArray[i].Logon(*completeStatus[i]);
@@ -184,16 +242,11 @@
         RDebug::Print(_L("<<< Tear down Close %d..."),i);
         ProcArray[i].Close(); //tear down
         }        
-    CleanupStack::PopAndDestroy(4);
+    CleanupStack::PopAndDestroy(KNumOfProc);
     }
 
 void CTFontSessionCache::RunTestCaseL( TInt aCurTestCase )
     {
-#if defined __WINS__ || defined __WINSCW__
-    aCurTestCase = aCurTestCase;  //to avoid unused warning
- //   TestComplete(); //only run test on hardware, always passes on winscw
- //   return;
-#endif
     ((CTFontSessionCacheStep*) iStep)->SetTestStepID(KUnknownSYMTestCaseIDName);
 
     switch (aCurTestCase)
--- a/fontservices/fontstore/tfs/t_fontsessioncacheproc.cpp	Fri Jun 11 15:33:54 2010 +0300
+++ b/fontservices/fontstore/tfs/t_fontsessioncacheproc.cpp	Tue Jul 06 16:23:19 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -21,17 +21,7 @@
  @internalComponent - Internal Symbian test code
 */
 
-#include <e32base.h>
-#include <e32cons.h>
-#include <e32test.h>
-#include <e32std.h>
-#include <e32debug.h>
 #include "FNTSTORE.H"
-#include "FNTBODY.H"
-#include "FNTSTD.H"
-#include <fbs.h>
-#include <bitstd.h>
-#include <bitdev.h>
 #include <e32math.h>
 
 _LIT(KOpenFont, "DejaVu Sans Condensed");
@@ -42,119 +32,53 @@
 #endif
 
 const TInt KTimeOut = 1000 * 1000;
-//make sure that the font is large enough to ensure that the session
-//cache is used.
-const TInt KTextHight = 220;
+
+
+_LIT(KTCacheDeletionProcess,"T_fontsessioncacheproc");
 
 /* it is expected that the main in this file will be called to test multiple 
-process output at the same time a process is being deleted (font and bitmap server
-disconnection.  There are  normally two instances of this process.  Two virtually
-identical processes are required to ensure that the session ID is the same.
-
-The first is with aThirdProcess set. This sets output to run in a loop until
-the timeout is completed.  These values  are input via program arguments.
-
-If aThirdProcess is false then only one font creation, draw text,
-font deletion cycle is completed. The test code will then repeatedly run
-this process with aThirdProcess set to false.
+process cache searching which is in the shared heap.
 */
 
-
-class TRunProc: public CBase
+class CRunProc: public CBase
     {
 public:
-    static TRunProc* NewL();
     void RunTestL();
-    ~TRunProc();
+    CRunProc();
+    ~CRunProc();
+    
+    inline void setFont(CFont*);
+    inline void setHandle(TInt);
 private:
-    TRunProc(){};
-    void ConstructL();
-    void DrawText();
     void CreateFontL();
 
 private:
-    RFbsSession* iFbs;
-    CFbsBitGc* iGc;
-    CFbsScreenDevice* iDev;
-    CFbsFont   *iFbsFont;
+    CBitmapFont* iFont;
+    TInt iSessionHandle;
     };
 
-TRunProc::~TRunProc()
+CRunProc::CRunProc()
     {
-    delete iGc;
-    delete iDev;
-    iFbs->Disconnect();
+    
     }
 
-void TRunProc::ConstructL()
+CRunProc::~CRunProc()
     {
-    TInt err = RFbsSession::Connect();
-    User::LeaveIfError(err);
-    iFbs = RFbsSession::GetSession();
-    User::LeaveIfNull(iFbs);
     
-    const TInt KDisplayMode = 3;
-    TDisplayMode mode[KDisplayMode];
-    mode[0] = EColor16MA;
-    mode[1] = EColor16MU;
-    mode[2] = EColor64K;
-
-    TInt count;
-    for (count = 0; count < KDisplayMode; count++)
-        {
-        TRAP(err, iDev = CFbsScreenDevice::NewL(KNullDesC, mode[count]));
-        if (err != KErrNotSupported)
-            {
-            break;
-            }
-        }
-
-    User::LeaveIfNull(iDev);
-
-    if(err == KErrNone)
-        {
-        iDev->ChangeScreenDevice(NULL);
-        iDev->SetAutoUpdate(ETrue);
-        iDev->CreateContext(iGc);
-        }
-    User::LeaveIfNull(iGc);
     }
 
-TRunProc* TRunProc::NewL()
+inline void CRunProc::setFont(CFont* aFont)
     {
-    TRunProc *ptr = new (ELeave) TRunProc;
-    CleanupStack::PushL(ptr);
-    ptr->ConstructL();
-    CleanupStack::Pop();
-    return ptr;
+    iFont = static_cast<CBitmapFont*>(aFont);
     }
 
-void TRunProc::CreateFontL()
+inline void CRunProc::setHandle(TInt aSessionHandle)
     {
-    TOpenFontSpec openFontSpec;
-    openFontSpec.SetName(KOpenFont);
-    openFontSpec.SetHeight(KTextHight);
-    openFontSpec.SetItalic(EFalse);
-    openFontSpec.SetBold(EFalse);
-
-    TTypeface Typeface;
-    Typeface.iName = KOpenFont;
-    TFontSpec fs;
-    fs.iTypeface = Typeface;
-
-    fs.iHeight = KTextHight;
-    CFbsFont* font = NULL;
-    TInt err = iDev->GetNearestFontToDesignHeightInPixels(font, fs);
-
-    User::LeaveIfNull(font);
-
-    // Use the font
-    iFbsFont = font;
-    iGc->UseFont(font);
-    iGc->Clear();
+    iSessionHandle = aSessionHandle;
     }
 
-void TRunProc::RunTestL()
+
+void CRunProc::RunTestL()
     {
     TTime theTime;
     theTime.UniversalTime();
@@ -168,56 +92,57 @@
     TTimeIntervalMicroSeconds32 timeout(KTimeOut);
     timer.After(timerStatus, timeout);
 
-    CreateFontL();
-    RDebug::Print(_L("DrawText()random=%d"), random);
-    DrawText();
-
     TText ch;
-    const TUint8 *bitmap;
+    const TUint8 *bitmap = NULL;
     TSize bitmapsize;
-    TOpenFontCharMetrics Metrics;
+    TOpenFontCharMetrics Metrics;    
     do
         {
-        for (ch = 'A'; ch <= 'Z'; ch++)
+        TInt hitcount = 0;
+        for (ch = 'A'; ch <= 'z'; ch++)
             {
-            iFbsFont->GetCharacterData((TInt) ch, Metrics, bitmap,bitmapsize);
+            if(iFont->GetCharacterData(iSessionHandle, (TInt)ch, Metrics,bitmap))
+                {
+                //RDebug::Print(_L("%c hit bitmap[0]=%x"),ch,bitmap[0]);
+                TUint8 testbyte = bitmap[0];
+                testbyte += testbyte;
+                __ASSERT_ALWAYS((testbyte & 0x01) == 0, User::Panic(KTCacheDeletionProcess, KErrGeneral));
+                hitcount++;
+                }
+            else 
+                {
+                //RDebug::Print(_L("%c missed"),ch);
+                }
             }
+        __ASSERT_ALWAYS(hitcount > 0, User::Panic(KTCacheDeletionProcess, KErrNotFound));
         }
     while (timerStatus == KRequestPending);
 
     timer.Cancel();
-    iGc->DiscardFont();
     timer.Close();
     }
-    
-
-void TRunProc::DrawText()
-    {
-    TText ch[2];
-    ch[1] = '\0';
-    for (ch[0] = 'A';ch[0] <= 'Z';ch[0]++)
-        {
-        TBufC<2> buf(ch);
-        iGc->DrawText(buf,TPoint(10,100));
-        }
-    for (ch[0] = 'a';ch[0] <= 'z';ch[0]++)
-        {
-        TBufC<2> buf(ch);
-        iGc->DrawText(buf,TPoint(10,100));
-        }
-    }
-    
-  
 
 void MainL()
     {
-    TRunProc* test = TRunProc::NewL();
+    RChunk gChunk;
+    User::LeaveIfError(gChunk.Open(1));
+    CleanupClosePushL(gChunk);
+    
+    TInt offset;
+    User::LeaveIfError(User::GetTIntParameter(2,offset));
+    TInt SessionHandle;
+    User::LeaveIfError(User::GetTIntParameter(3,SessionHandle));
+    
+    CRunProc *test = new (ELeave) CRunProc;
+    
+    test->setFont(reinterpret_cast<CFont*>(offset + reinterpret_cast<TInt>(gChunk.Base())));
+    test->setHandle(SessionHandle);
     CleanupStack::PushL(test);
 
     RDebug::Print(_L("T_fontsessioncacheproc MainL()"));
     test->RunTestL();
-
-    CleanupStack::PopAndDestroy();
+    
+    CleanupStack::PopAndDestroy(2);
     }
 
 // Cleanup stack harness
@@ -225,8 +150,7 @@
     {
     __UHEAP_MARK;
     CTrapCleanup* cleanupStack = CTrapCleanup::New();
-    TRAPD(error, MainL());
-    _LIT(KTCacheDeletionProcess,"T_fontsessioncacheproc");
+    TRAPD(error, MainL());    
     __ASSERT_ALWAYS(!error, User::Panic(KTCacheDeletionProcess, error));
     delete cleanupStack;
     __UHEAP_MARKEND;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fontservices/fontstore/traces/OstTraceDefinitions.h	Tue Jul 06 16:23:19 2010 +0300
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef __OSTTRACEDEFINITIONS_H__
+#define __OSTTRACEDEFINITIONS_H__
+// OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler
+// REMOVE BEFORE CHECK-IN TO VERSION CONTROL
+// #define OST_TRACE_COMPILER_IN_USE
+#include <opensystemtrace.h>
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fontservices/fontstore/traces/fixed_id.definitions	Tue Jul 06 16:23:19 2010 +0300
@@ -0,0 +1,46 @@
+/*
+* Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt.
+[GROUP]TRACE_DUMP=0x89
+[GROUP]TRACE_FATAL=0x81
+[GROUP]TRACE_IMPORTANT=0x85
+[TRACE]TRACE_DUMP[0x89]_CFONTSTORE_SANITYCHECKFORTTFL=0x3
+[TRACE]TRACE_DUMP[0x89]_DUP1_CFONTSTORE_SANITYCHECKFORTTFL=0x4
+[TRACE]TRACE_DUMP[0x89]_DUP2_CFONTSTORE_SANITYCHECKFORTTFL=0x5
+[TRACE]TRACE_DUMP[0x89]_DUP3_CFONTSTORE_SANITYCHECKFORTTFL=0x6
+[TRACE]TRACE_DUMP[0x89]_DUP4_CFONTSTORE_SANITYCHECKFORTTFL=0x7
+[TRACE]TRACE_DUMP[0x89]_DUP5_CFONTSTORE_SANITYCHECKFORTTFL=0x8
+[TRACE]TRACE_DUMP[0x89]_DUP6_CFONTSTORE_SANITYCHECKFORTTFL=0x9
+[TRACE]TRACE_DUMP[0x89]__READFROMFILEL=0x1
+[TRACE]TRACE_DUMP[0x89]__TTFTABLETAGFROMBUFFERL=0x2
+[TRACE]TRACE_FATAL[0x81]_CBITMAPFONT_DELETESHAPE=0x2
+[TRACE]TRACE_FATAL[0x81]_CBITMAPFONT_FONTBITMAP=0x3
+[TRACE]TRACE_FATAL[0x81]_CFONTSTORE_GETNEARESTFONTINPIXELS=0x5
+[TRACE]TRACE_FATAL[0x81]_CFONTSTORE_GETNEARESTTYPEFACE=0x8
+[TRACE]TRACE_FATAL[0x81]_CFONTSTORE_GETNEARESTTYPEFACEFONTBITMAP=0x9
+[TRACE]TRACE_FATAL[0x81]_CFONTSTORE_INTERNALIZEFONTSTOREFILEL=0x7
+[TRACE]TRACE_FATAL[0x81]_CFONTSTORE_TYPEFACESUPPORT=0x6
+[TRACE]TRACE_FATAL[0x81]_CFONTSTORE_VERTICALTWIPSTOPIXELS=0xb
+[TRACE]TRACE_FATAL[0x81]_DUP1_CBITMAPFONT_FONTBITMAP=0x4
+[TRACE]TRACE_FATAL[0x81]_DUP1_CFONTSTORE_GETNEARESTTYPEFACEFONTBITMAP=0xa
+[TRACE]TRACE_FATAL[0x81]_DUP1_TOPENFONTMETRICS_SETBASELINECORRECTION=0xe
+[TRACE]TRACE_FATAL[0x81]_TCHARACTERMETRICSTABLE_METRIC=0x1
+[TRACE]TRACE_FATAL[0x81]_TOPENFONTMETRICS_SETBASELINECORRECTION=0xd
+[TRACE]TRACE_FATAL[0x81]_TOPENFONTSPEC_APPLYRATIO=0xf
+[TRACE]TRACE_FATAL[0x81]__PANIC=0xc
+[TRACE]TRACE_IMPORTANT[0x85]_CBITMAPFONT_INSTALLOPENFONTSHAPER=0x1
--- a/fontservices/referencefonts/utils/bdfharn.cpp	Fri Jun 11 15:33:54 2010 +0300
+++ b/fontservices/referencefonts/utils/bdfharn.cpp	Tue Jul 06 16:23:19 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -98,7 +98,7 @@
 
 void CBDFHarness::ConstructL()
 	{
-	RFbsSession::Connect();
+	User::LeaveIfError(RFbsSession::Connect());
 	iFbs = RFbsSession::GetSession();
 	if (iFbs == NULL)
 		User::Leave(KErrGeneral);
@@ -128,7 +128,7 @@
 	}
 
 
-void CBDFHarness::MakeBDFFont()
+void CBDFHarness::MakeBDFFontL()
 	{
 	TOpenFontFaceAttrib attrib;
 	iStandardFont->GetFaceAttrib(attrib);
@@ -140,7 +140,7 @@
 
 	// Open file session
 	RFs file_session;
-	file_session.Connect();
+	User::LeaveIfError(file_session.Connect());
 	file_session.MkDir(_L("\\BDFfonts\\"));
 	// Open file
 	RFile file;
--- a/fontservices/referencefonts/utils/bdfharn.h	Fri Jun 11 15:33:54 2010 +0300
+++ b/fontservices/referencefonts/utils/bdfharn.h	Tue Jul 06 16:23:19 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -32,7 +32,7 @@
 	public:
 	static CBDFHarness* NewL(const TDesC &aTitle, const TDesC &aHeading);
 	~CBDFHarness();
-	void MakeBDFFont();
+	void MakeBDFFontL();
 
 	void DecodeBitmap(TInt aWidth, TInt aPaddedWidth, TInt aHeight, const TUint8* aCodedBitmap, TUint8* aBitmap);
 	TInt ReadBit();
--- a/fontservices/referencefonts/utils/ttf2bdf.cpp	Fri Jun 11 15:33:54 2010 +0300
+++ b/fontservices/referencefonts/utils/ttf2bdf.cpp	Tue Jul 06 16:23:19 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 1999-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -39,7 +39,7 @@
 
 	TRAP(error,
 	bdfHarness = CBDFHarness::NewL(_L("MAKEBDF"),_L("TTF2BDF v2 - Make bitmap BDF font from scaleable font"));
-	bdfHarness->MakeBDFFont();	
+	bdfHarness->MakeBDFFontL();	
 	delete bdfHarness;
 	__UHEAP_MARKEND;
 	);
--- a/localisation/localesupport/new_locale_dll/collation/share/locl_collation.h	Fri Jun 11 15:33:54 2010 +0300
+++ b/localisation/localesupport/new_locale_dll/collation/share/locl_collation.h	Tue Jul 06 16:23:19 2010 +0300
@@ -20,7 +20,7 @@
 #define __LOCL_COLLATION_H_
 
 #if !defined(__E32STD_H__)
-#include <E32std.h>
+#include <e32std.h>
 #endif
 
 #ifdef _UNICODE
--- a/textandlocutils/inlinetext/inc/InlineTextNoMatchesIndicatorSource.h	Fri Jun 11 15:33:54 2010 +0300
+++ b/textandlocutils/inlinetext/inc/InlineTextNoMatchesIndicatorSource.h	Tue Jul 06 16:23:19 2010 +0300
@@ -22,12 +22,12 @@
 
 // INCLUDES
 
-#include "inlinetextbase.h"
+#include "InlineTextBase.h"
 #ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
 #include <tagma.h>
 #else
 #include <tagma.h>
-#include <tagmaLayoutAndSource.h>
+#include <tagmalayoutandsource.h>
 #endif
 
 // CONSTANTS
--- a/textandlocutils/jplangutil/group/bld.inf	Fri Jun 11 15:33:54 2010 +0300
+++ b/textandlocutils/jplangutil/group/bld.inf	Tue Jul 06 16:23:19 2010 +0300
@@ -44,8 +44,8 @@
 
 
 PRJ_TESTEXPORTS
-../test/group/tjplangutil.iby		CORE_MW_LAYER_IBY_EXPORT_PATH(tjplangutil.iby)
+../test/group/tJPLangUtil.iby		CORE_MW_LAYER_IBY_EXPORT_PATH(tjplangutil.iby)
 
 PRJ_TESTMMPFILES
-../test/group/tjplangutil.mmp
+../test/group/tJPLangUtil.mmp
 	
\ No newline at end of file
--- a/textandlocutils/jplangutil/group/jplangutil.mmp	Fri Jun 11 15:33:54 2010 +0300
+++ b/textandlocutils/jplangutil/group/jplangutil.mmp	Tue Jul 06 16:23:19 2010 +0300
@@ -45,4 +45,4 @@
 SOURCE          jplangutil.cpp
 
 LIBRARY         euser.lib
-DEFFILE         JPLANGUTIL.DEF
+DEFFILE         jplangutil.def
Binary file textandlocutils/numbergrouping/conf/numbergrouping.confml has changed
--- a/textandlocutils/numbergrouping/group/bld.inf	Fri Jun 11 15:33:54 2010 +0300
+++ b/textandlocutils/numbergrouping/group/bld.inf	Tue Jul 06 16:23:19 2010 +0300
@@ -56,7 +56,7 @@
 
 PRJ_TESTEXPORTS
 ../test/group/tnumbergrouping.iby		CORE_MW_LAYER_IBY_EXPORT_PATH(tnumbergrouping.iby)
-../test/group/101F8775.txt \epoc32\RELEASE\WINSCW\UDEB\Z\private\10202be9\101F8775.txt
+../test/group/101F8775.txt /epoc32/RELEASE/WINSCW/UDEB/Z/private/10202be9/101F8775.txt
 
 PRJ_TESTMMPFILES
 ../test/group/tnumbergrouping.mmp
--- a/textandlocutils/numbergrouping/src/NumberGrouping.cpp	Fri Jun 11 15:33:54 2010 +0300
+++ b/textandlocutils/numbergrouping/src/NumberGrouping.cpp	Tue Jul 06 16:23:19 2010 +0300
@@ -37,7 +37,7 @@
 
 const TInt KMinimumLengthToGroup = 1; // No grouping occurs if fewer than this in unformatted buffer
 
-#include <NumberGrouping.rsg>
+#include <numbergrouping.rsg>
 
 
 GLDEF_C void Panic(TNumberGroupingPanic aPanic)
--- a/textandlocutils/numbergrouping/src/RegularExpression.cpp	Fri Jun 11 15:33:54 2010 +0300
+++ b/textandlocutils/numbergrouping/src/RegularExpression.cpp	Tue Jul 06 16:23:19 2010 +0300
@@ -79,7 +79,8 @@
 																	// rest of the method _so_ much easier to read
 		
 		CStateMachine* StateMachine = CStateMachine::NewLC(KNumOfRecognisedChars, desPattern.Length());
-		iStateMachines.Append(StateMachine);
+		User::LeaveIfError(iStateMachines.Append(StateMachine));
+		CleanupStack::Pop(); // now the ownership transfers to iStateMachines
 
 		// parse the desPattern
 
@@ -264,8 +265,6 @@
 
 		if(parseState != EAny)
 			User::Panic(bufParsingError, KErrSyntaxError);
-					
-		CleanupStack::Pop(); // iStateMachine[nPatternCount]
 	}
 }
 
--- a/textandlocutils/numbergrouping/src/StateMachine.cpp	Fri Jun 11 15:33:54 2010 +0300
+++ b/textandlocutils/numbergrouping/src/StateMachine.cpp	Tue Jul 06 16:23:19 2010 +0300
@@ -139,8 +139,11 @@
 	{
 		TInt nIndex = static_cast<TInt>(aChar.GetNumericValue());
 		
-		aIndices.Append(nIndex);
-		aIndices.Append(KCharacterDot);
+		TInt ret = KErrNone;
+		ret |= aIndices.Append(nIndex);
+		ret |= aIndices.Append(KCharacterDot);
+		__ASSERT_DEBUG(!ret, User::Panic(_L("RArray append failure"), ret));
+		if (KErrNone != ret) return ret;
 
 		return nIndex;
 	}
--- a/textrendering/textformatting/group/FORM2.MMP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/group/FORM2.MMP	Tue Jul 06 16:23:19 2010 +0300
@@ -30,7 +30,7 @@
 
 sourcepath ../tbox
 userinclude ../tbox
-userinclude ../inc
+userinclude ../inc ../traces
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 source CARET.CPP
--- a/textrendering/textformatting/group/TAGMA.MMP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/group/TAGMA.MMP	Tue Jul 06 16:23:19 2010 +0300
@@ -30,7 +30,7 @@
 
 SOURCEPATH ../tagma
 userinclude ../tagma
-userinclude ../inc
+userinclude ../inc ../traces
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 source TMCODE.CPP TMFORWRD.CPP TMGLYPH.CPP TMINTERP.CPP TMLAYOUT.CPP
--- a/textrendering/textformatting/group/Undo.mmp	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/group/Undo.mmp	Tue Jul 06 16:23:19 2010 +0300
@@ -31,7 +31,7 @@
 
 SOURCEPATH ../undo
 userinclude ../undo
-userinclude ../inc
+userinclude ../inc ../traces
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 source UniqueInstance.cpp UniqueInstanceImpl.cpp
--- a/textrendering/textformatting/tagma/TMGLYPH.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/tagma/TMGLYPH.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -19,6 +19,11 @@
 
 #include "TMSTD.H"
 #include <bidi.h>
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "TMGLYPHTraces.h"
+#endif
+
 
 
 inline TBool IsSurrogate(TText a) { return 0xD800 == (a & 0xF800); }
@@ -312,6 +317,10 @@
 		TPtrC text;
 		aSource.GetText(aStart, text, dummy);
 		TInt textEnd = aStart + text.Length();
+		if (aStart >= textEnd)
+		    {
+		    OstTrace0( TRACE_FATAL, DUP1__APPENDTEXTTOBUFFER, "EZeroLengthTextSupplied" );
+		    }
 		__ASSERT_ALWAYS(aStart < textEnd, TmPanic(EZeroLengthTextSupplied));
 		if (aEnd < textEnd)
 			{
@@ -413,6 +422,10 @@
 									TDisplayedTextDirectionality aDirectionality, TText* aBuffer,TUint aContextChar,
 									TTmCharFormat* aFormat, CTmTextFontCache** aFont)
 	{
+	if (aStart > aEnd)
+	    {
+	    OstTrace0( TRACE_DUMP, RTMTEXTCACHE_GETDISPLAYEDTEXT, "EBadArg" );
+	    }
 	__ASSERT_DEBUG(aStart <= aEnd, TmPanic(EBadArg));
 	if (aContextChar == 0)
 		aBuffer[0] = 0xFFFF;
--- a/textrendering/textformatting/tagma/TMINTERP.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/tagma/TMINTERP.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -23,6 +23,11 @@
 #include "TmHighlightSource.h"
 #include <s32mem.h>
 #include <frmtlay.h>
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "TMINTERPTraces.h"
+#endif
+
 
 TTmInterpreterParam::TTmInterpreterParam(const CTmTextLayout& aTextLayout):
 	iByteCode(&aTextLayout.Code()),
@@ -321,7 +326,11 @@
 		{
 		iTmTextDrawExt = &iTmTextDrawExtDefault;
 		}
-	__ASSERT_ALWAYS(iTmTextDrawExt != NULL, Panic(ENotImplemented));
+	if(!iTmTextDrawExt)
+	    {
+        OstTrace0( TRACE_FATAL, RTMGENERALINTERPRETER_RTMGENERALINTERPRETER, "ENotImplemented" );
+        __ASSERT_ALWAYS(0, Panic(ENotImplemented));
+	    }
 	}
 
 /**
@@ -371,6 +380,10 @@
 	{
 	while (Next())
 		{
+		if (Op() != EOpLine)
+		    {
+		    OstTrace0( TRACE_FATAL, TTMINTERPRETER_LINES, "ECorrupt" );
+		    }
 		__ASSERT_ALWAYS(Op() == EOpLine, Panic(ECorrupt));
 		Skip();
 		}
@@ -386,6 +399,10 @@
 	{
 	while (Next())
 		{
+		if (Op() != EOpLine)
+		    {
+		    OstTrace0( TRACE_FATAL, TTMINTERPRETER_PARAGRAPHS, "ECorrupt" );
+		    }
 		__ASSERT_ALWAYS(Op() == EOpLine, Panic(ECorrupt));
 		Skip();
 		}
@@ -410,12 +427,20 @@
 
 	if (!Next())
 		return EFalse;
+	if (Op() != EOpLine)
+	    {
+	    OstTrace0( TRACE_FATAL, TTMINTERPRETER_DOCPOSTOLINE, "ECorrupt" );
+	    }
 	__ASSERT_ALWAYS(Op() == EOpLine, Panic(ECorrupt));
 	while  (!PosIsInLine(doc_pos))
 		{
 		Skip();
 		if (!Next())
 			return EFalse;
+		if (Op() != EOpLine)
+		    {
+		    OstTrace0( TRACE_FATAL, DUP1_TTMINTERPRETER_DOCPOSTOLINE, "ECorrupt" );
+		    }
 		__ASSERT_ALWAYS(Op() == EOpLine, Panic(ECorrupt));
 		}
 
@@ -452,6 +477,10 @@
 	{
 	while (Next())
 		{
+		if (Op() != EOpLine)
+		    {
+		    OstTrace0( TRACE_FATAL, TTMINTERPRETER_LINENUMBERTOLINE, "ECorrupt" );
+		    }
 		__ASSERT_ALWAYS(Op() == EOpLine, Panic(ECorrupt));
 		if (iLineInfo.iLineNumber == aLineNumber)
 			return TRUE;
@@ -477,6 +506,10 @@
 	{
 	while (Next())
 		{
+		if (Op() != EOpLine)
+		    {
+		    OstTrace0( TRACE_FATAL, TTMINTERPRETER_PARNUMBERTOLINE, "ECorrupt" );
+		    }
 		__ASSERT_ALWAYS(Op() == EOpLine, Panic(ECorrupt));
 		if (iLineInfo.iParNumber == aParNumber)
 			{
@@ -498,6 +531,10 @@
 	{
 	while (Next())
 		{
+		if (Op() != EOpLine)
+		    {
+		    OstTrace0( TRACE_FATAL, TTMINTERPRETER_YPOSTOLINE, "ECorrupt" );
+		    }
 		__ASSERT_ALWAYS(Op() == EOpLine, Panic(ECorrupt));
 		if (iLineInfo.iOuterRect.iTl.iY <= aYPos && iLineInfo.iOuterRect.iBr.iY > aYPos)
 			return TRUE;
@@ -522,6 +559,10 @@
 	int width = 0;
 	while (Next())
 		{
+		if (Op() != EOpLine)
+		    {
+		    OstTrace0( TRACE_FATAL, TTMINTERPRETER_WIDTHOFWIDESTLINE, "ECorrupt" );
+		    }
 		__ASSERT_ALWAYS(Op() == EOpLine, Panic(ECorrupt));
 		// Quit if below the range.
 		if (iLineInfo.iOuterRect.iTl.iY >= aBottom)
@@ -562,6 +603,10 @@
 		return;
 	while (iLineInfo.iOuterRect.iBr.iY < aTopY)
 		{
+		if (Op() != EOpLine)
+		    {
+		    OstTrace0( TRACE_FATAL, TTMINTERPRETER_HORIZONTALEXTREMES, "ECorrupt" );
+		    }
 		__ASSERT_ALWAYS(Op() == EOpLine, Panic(ECorrupt));
 		Skip();
 		if (!Next())
@@ -569,6 +614,10 @@
 		}
 	while (iLineInfo.iOuterRect.iTl.iY <= aBottomY)
 		{
+		if (Op() != EOpLine)
+		    {
+		    OstTrace0( TRACE_FATAL, DUP1_TTMINTERPRETER_HORIZONTALEXTREMES, "ECorrupt" );
+		    }
 		__ASSERT_ALWAYS(Op() == EOpLine, Panic(ECorrupt));
 		if (iLineInfo.iInnerRect.iTl.iX < aLeft)
 			aLeft = iLineInfo.iInnerRect.iTl.iX;
@@ -716,6 +765,10 @@
 	if (!aByteCodeIterator.VisualEndOfLineIsAmbiguous())
 		iIgnorePosition = aByteCodeIterator.LineInfo().iEnd;
 
+	if (aByteCodeIterator.Op() != TTmInterpreter::EOpText)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_RTMGRAPHEMEINTEXTCHUNKITERATOR_BEGIN, "EInvariant" );
+	    }
 	__ASSERT_DEBUG(aByteCodeIterator.Op() == TTmInterpreter::EOpText, TmPanic(EInvariant));
 
 	if (iFont)
@@ -788,6 +841,10 @@
 */
 TInt RTmGraphemeInTextChunkIterator::Next()
 	{
+	if (AtEnd())
+	    {
+	    OstTrace0( TRACE_DUMP, RTMGRAPHEMEINTEXTCHUNKITERATOR_NEXT, "EBadArg" );
+	    }
 	__ASSERT_DEBUG(!AtEnd(), TmPanic(EBadArg));
 	TInt previousPositionInBuffer = iPosition.iPosInText;
 	TInt previousPosition = iReverse?
@@ -806,6 +863,10 @@
 	TInt numCodePoints = iPosition.iPosInText - previousPositionInBuffer;
 	TInt currentPosition = iReverse?
 		iEndChar - iPosition.iPosInText : iStartChar + iPosition.iPosInText;
+	if (currentPosition == previousPosition)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_RTMGRAPHEMEINTEXTCHUNKITERATOR_NEXT, "EInvariant" );
+	    }
 	__ASSERT_DEBUG(currentPosition != previousPosition, TmPanic(EInvariant));
 
 	TInt cachePos = 0;
@@ -837,6 +898,10 @@
 			}
 		++cachePos;
 		}
+	if (0 >= cachePos)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP2_RTMGRAPHEMEINTEXTCHUNKITERATOR_NEXT, "EInvariant" );
+	    }
 	__ASSERT_DEBUG(0 < cachePos, TmPanic(EInvariant));
 	return cachePos;
 	}
@@ -868,6 +933,10 @@
 */
 void RTmGraphemeInTextChunkIteratorNice::Next()
 	{
+	if (AtEnd())
+	    {
+	    OstTrace0( TRACE_DUMP, RTMGRAPHEMEINTEXTCHUNKITERATORNICE_NEXT, "EBadArg" );
+	    }
 	__ASSERT_DEBUG(!AtEnd(), TmPanic(EBadArg));
 	// Return if we have not finished moving through the cache.
 	if (++iCurrent != iEnd)
@@ -910,6 +979,10 @@
 */
 void RTmGraphemeInTextChunkIteratorNice::FindEdge(const TTmDocPos& aDocPos)
 	{
+	if (AtEnd())
+	    {
+	    OstTrace0( TRACE_DUMP, RTMGRAPHEMEINTEXTCHUNKITERATORNICE_FINDEDGE, "EBadArg" );
+	    }
 	__ASSERT_DEBUG(!AtEnd(), TmPanic(EBadArg));
 	while (RTmGraphemeEdgeIterator::ETotalMatch !=
 		RTmGraphemeEdgeIterator::DocPosMatches(aDocPos, *Get()))
@@ -1056,6 +1129,10 @@
 */
 void RTmGraphemeEdgeIterator::Next()
 	{
+	if (AtEnd())
+	    {
+	    OstTrace0( TRACE_DUMP, RTMGRAPHEMEEDGEITERATOR_NEXT, "EBadArg" );
+	    }
 	__ASSERT_DEBUG(!AtEnd(), TmPanic(EBadArg));
 	--iCacheSize;
 	if (0 != iCacheSize)
@@ -1078,6 +1155,10 @@
 		{
 		// The WHILE loop assures that there is always sufficientByteCode avaliable.
 		TBool haveSufficientByteCode = iByteCodeIterator->Next();
+		if (!haveSufficientByteCode)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP1_RTMGRAPHEMEEDGEITERATOR_NEXT, "EBadArg" );
+		    }
 		__ASSERT_DEBUG(haveSufficientByteCode, TmPanic(EBadArg));
 
 		iByteCodeIterator->Skip();
@@ -1619,6 +1700,10 @@
 						: RTmTextCache::ELeftToRight;
 				User::LeaveIfError(iTextCache.GetDisplayedText(StartChar(), EndChar(),
 					directionality, buffer,aContextChar, 0, &font));
+				if (!font)
+				    {
+				    OstTrace0( TRACE_DUMP, RTMGENERALINTERPRETER_GETDISPLAYEDTEXTL, "EInvariant" );
+				    }
 				__ASSERT_DEBUG(font, TmPanic(EInvariant));
 				CFont::TPositionParam p;
 				int length = EndChar() - StartChar() + 1;
@@ -1966,6 +2051,10 @@
 
 TBool RTmDrawingInterpreter::GetAdjustedHighlightClipRegion(const TRect& aClipRect, RRegion& aHighlightRegion) const
 	{
+	if (NULL == iHighlightExtensions)
+	    {
+	    OstTrace0( TRACE_DUMP, RTMDRAWINGINTERPRETER_GETADJUSTEDHIGHLIGHTCLIPREGION, "EInvariant" );
+	    }
 	__ASSERT_DEBUG(NULL != iHighlightExtensions, TmPanic(EInvariant));
 
 	aHighlightRegion.Clear();
@@ -2023,6 +2112,10 @@
 TBool RTmDrawingInterpreter::GetFirstAdjustedHighlightClipRect(RTmBoundingRectInterpreter& aInterpreter,
 															   const TRect& aClipRect, TRect& aRect) const
 	{
+	if (NULL == iHighlightExtensions)
+	    {
+	    OstTrace0( TRACE_DUMP, RTMDRAWINGINTERPRETER_GETFIRSTADJUSTEDHIGHLIGHTCLIPRECT, "EInvariant" );
+	    }
 	__ASSERT_DEBUG(NULL != iHighlightExtensions, TmPanic(EInvariant));
 
 	if (iHighlightEndPos > iHighlightStartPos)
@@ -2063,7 +2156,15 @@
 TBool RTmDrawingInterpreter::GetNextAdjustedHighlightClipRect(RTmBoundingRectInterpreter& aInterpreter,
 															  const TRect& aClipRect, TRect& aRect) const
 	{
+	if (NULL == iHighlightExtensions)
+	    {
+	    OstTrace0( TRACE_DUMP, RTMDRAWINGINTERPRETER_GETNEXTADJUSTEDHIGHLIGHTCLIPRECT, "EInvariant" );
+	    }
 	__ASSERT_DEBUG(NULL != iHighlightExtensions, TmPanic(EInvariant));
+	if (iHighlightEndPos <= iHighlightStartPos)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_RTMDRAWINGINTERPRETER_GETNEXTADJUSTEDHIGHLIGHTCLIPRECT, "EInvariant" );
+	    }
 	__ASSERT_DEBUG(iHighlightEndPos > iHighlightStartPos, TmPanic(EInvariant));
 
 	TBool found = aInterpreter.NextRect(aRect);
@@ -3145,6 +3246,11 @@
 TBool TTmByteCodeFinder::FindByteCode(TBool aToParStart,TBool aToParEnd,TInt aMaxExtraLines,TInfo& aInfo,
 									  TBidirectionalContext* aStartBdState,TBidirectionalContext* aEndBdState)
 	{
+	if (!((aStartBdState && aEndBdState)
+	        || (!aStartBdState && !aEndBdState)))
+	    {
+	    OstTrace0( TRACE_DUMP, TTMBYTECODEFINDER_FINDBYTECODE, "EBadArg" );
+	    }
 	__ASSERT_DEBUG((aStartBdState && aEndBdState)
 		|| (!aStartBdState && !aEndBdState), TmPanic(EBadArg));
 	if (aStartBdState)
@@ -3163,6 +3269,10 @@
 	TBool get_info = EFalse;
 	while (Next())
 		{
+		if (Op() != EOpLine)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP1_TTMBYTECODEFINDER_FINDBYTECODE, "ECorrupt" );
+		    }
 		__ASSERT_ALWAYS(Op() == EOpLine, Panic(ECorrupt));
 		contextChar = LineContextCharChar();
 		foundStart = iStartDocPos >= StartChar() && iStartDocPos < EndChar();
@@ -3196,6 +3306,10 @@
 	do
 		{
 		// Operators must all be EOpLine because we're skipping from line to line
+		if (Op() != EOpLine)
+		    {
+		    OstTrace0( TRACE_FATAL, DUP3_TTMBYTECODEFINDER_FINDBYTECODE, "ECorrupt" );
+		    }
 		__ASSERT_ALWAYS(Op() == EOpLine, Panic(ECorrupt));
 		aInfo.iBounds.iBr = LineInfo().iOuterRect.iBr;
 		aInfo.iEndCodePos = EndCodePos();
@@ -3233,6 +3347,10 @@
 	TInt heightToSkip = aTotalHeight - aMaxHeight;
 	TInt cumulativeHeight = 0;
 	
+	if (!((aStartBdState && aEndBdState) || (!aStartBdState && !aEndBdState)))
+	    {
+	    OstTrace0( TRACE_DUMP, TTMBYTECODEFINDER_FINDBYTECODEATEND, "EBadArg" );
+	    }
 	__ASSERT_DEBUG((aStartBdState && aEndBdState) || (!aStartBdState && !aEndBdState), TmPanic(EBadArg));
 	if (aStartBdState)
 		{
@@ -3246,6 +3364,10 @@
 	TBool foundStart = EFalse;
 	while (Next())
 		{
+		if (Op() != EOpLine)
+		    {
+		    OstTrace0( TRACE_FATAL, DUP1_TTMBYTECODEFINDER_FINDBYTECODEATEND, "ECorrupt" );
+		    }
 		__ASSERT_ALWAYS(Op() == EOpLine, Panic(ECorrupt));
 		if (cumulativeHeight > heightToSkip)
 			{
@@ -3267,6 +3389,10 @@
 	TBool foundEnd = EFalse;	
 	while (Next())
 		{
+		if (Op() != EOpLine)
+		    {
+		    OstTrace0( TRACE_FATAL, DUP2_TTMBYTECODEFINDER_FINDBYTECODEATEND, "ECorrupt" );
+		    }
 		__ASSERT_ALWAYS(Op() == EOpLine, Panic(ECorrupt));
 		foundEnd = ETrue;
 		aInfo.iBounds.iBr = LineInfo().iOuterRect.iBr;
--- a/textrendering/textformatting/tagma/TMLAYOUT.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/tagma/TMLAYOUT.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -26,6 +26,11 @@
 #include <frmtlay.h>
 #include "tmreformat.h"
 #include "frmUtils.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "TMLAYOUTTraces.h"
+#endif
+
 
 #define UNUSED_VAR(a) a = a
 
@@ -1061,6 +1066,10 @@
 EXPORT_C TBool CTmTextLayout::GetDisplayedTextL(TInt aLineNumber, TDes& aText,
 	TInt& aNeeded) const
 	{
+	if (!iSource)
+	    {
+	    OstTrace0( TRACE_FATAL, CTMTEXTLAYOUT_GETDISPLAYEDTEXTL, "ENoSource" );
+	    }
 	__ASSERT_ALWAYS(iSource, TmPanic(ENoSource));
 	RTmGeneralInterpreter interpreter(*iSource, TTmInterpreterParam(*this));
 	CleanupClosePushL(interpreter);
--- a/textrendering/textformatting/tagma/TMTEXT.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/tagma/TMTEXT.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -20,6 +20,11 @@
 #include <txtfrmat.h>
 #include <txtetext.h>
 #include "TMSTD.H"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "TMTEXTTraces.h"
+#endif
+
 
 /**
  * Creates a CTmText object using the specified device map and formatting parameters.
@@ -189,6 +194,10 @@
 						 const TTmCharFormat* aCharFormat,const RTmParFormat* aParFormat,
 						 TRect* aRedrawRect,TInt* aScroll)
 	{
+	if (0 > aPos)
+	    {
+	    OstTrace0( TRACE_DUMP, CTMTEXTIMP_INSERTL, "EBadArg" );
+	    }
 	__ASSERT_DEBUG(0 <= aPos, TmPanic(EBadArg));
 
 	// Don't insert zero-length text.
@@ -342,6 +351,10 @@
 	static const TText end_par = CEditableText::EParagraphDelimiter;
 	TInt index = 0;
 	TInt textLength = iText.Length();
+	if (aPos > textLength + 1)
+	    {
+	    OstTrace0( TRACE_DUMP, CTMTEXTIMP_GETTEXT, "EIndexOutOfRange" );
+	    }
 	__ASSERT_DEBUG(aPos <= textLength + 1, TmPanic(EIndexOutOfRange));
 	if (aPos < textLength)
 		{
@@ -375,6 +388,10 @@
 
 void CTmTextImp::GetParagraphFormatL(TInt aPos,RTmParFormat& aFormat) const
 	{
+	if (0 > aPos || aPos > iText.Length())
+	    {
+	    OstTrace0( TRACE_DUMP, CTMTEXTIMP_GETPARAGRAPHFORMATL, "EBadArg" );
+	    }
 	__ASSERT_DEBUG(0 <= aPos && aPos <= iText.Length(), TmPanic(EBadArg));
 	TInt textLength = iText.Length();
 	if (0 == textLength)
@@ -486,10 +503,11 @@
 */
 void CTmTextImp::RRunArray::FindRun(TInt aPos,TInt& aRunIndex,TInt& aOffset) const
 	{
-#ifdef _DEBUG
-	TInt error =
-#endif
-	FindRunNonstrict(aPos, aRunIndex, aOffset);
+	TInt error = FindRunNonstrict(aPos, aRunIndex, aOffset);
+	if (error)
+	    {
+	    OstTrace0( TRACE_DUMP, RRUNARRAY_FINDRUN, "ETextRunNotFound" );
+	    }
 	__ASSERT_DEBUG(!error, TmPanic(ETextRunNotFound));
 	}
 
@@ -500,7 +518,15 @@
 	int end = 0;
 	for (int i = 0; i < n; i++)
 		{
+		if (0 > iRun[i].iLength)
+		    {
+		    OstTrace0( TRACE_DUMP, RRUNARRAY_FINDRUNNONSTRICT, "EInvalidTextRunLength" );
+		    }
 		__ASSERT_DEBUG(0 <= iRun[i].iLength, TmPanic(EInvalidTextRunLength));
+		if (0 > iRun[i].iIndex)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP1_RRUNARRAY_FINDRUNNONSTRICT, "EInvalidTextRunIndex" );
+		    }
 		__ASSERT_DEBUG(0 <= iRun[i].iIndex, TmPanic(EInvalidTextRunIndex));
 		end += iRun[i].iLength;
 		if (end >= aPos)
@@ -522,6 +548,10 @@
 TInt CTmTextImp::RRunArray::RunAndStartPos(TInt aPos, TRun& aRunOut) const
 	{
 	TInt runs = iRun.Count();
+	if (0 >= runs)
+	    {
+	    OstTrace0( TRACE_DUMP, RRUNARRAY_RUNANDSTARTPOS, "ETextRunNotFound" );
+	    }
 	__ASSERT_DEBUG(0 < runs, TmPanic(ETextRunNotFound));
 	TInt start = 0;
 	TInt end = 0;
@@ -537,7 +567,15 @@
 // Insert a run of length aLength and attribute aIndex at aPos; if aIndex is < 0, use the index at aPos.
 TInt CTmTextImp::RRunArray::Insert(TInt aPos,TInt aLength,TInt aIndex)
 	{
+	if (0 >= aLength)
+	    {
+	    OstTrace0( TRACE_DUMP, RRUNARRAY_INSERT, "EInvalidTextRunLength" );
+	    }
 	__ASSERT_DEBUG(0 < aLength, TmPanic(EInvalidTextRunLength));
+	if (0 > aIndex && 0 >= iRun.Count())
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_RRUNARRAY_INSERT, "EParagraphFormatRequired" );
+	    }
 	__ASSERT_DEBUG(0 <= aIndex || 0 < iRun.Count(), TmPanic(EParagraphFormatRequired));
 
 	int error = 0;
@@ -561,6 +599,10 @@
 		}
 	TRun& run = iRun[run_index];
 
+	if (0 > offset || offset > run.iLength)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP2_RRUNARRAY_INSERT, "EInvariant" );
+	    }
 	__ASSERT_DEBUG(0 <= offset && offset <= run.iLength, TmPanic(EInvariant));
 
 	// If aIndex is negative, it means don't change the attribute.
@@ -594,7 +636,15 @@
 
 TInt CTmTextImp::RRunArray::Set(TInt aPos,TInt aLength,TInt aIndex)
 	{
+	if (0 > aLength)
+	    {
+	    OstTrace0( TRACE_DUMP, RRUNARRAY_SET, "EInvalidTextRunLength" );
+	    }
 	__ASSERT_DEBUG(0 <= aLength, TmPanic(EInvalidTextRunLength));
+	if (0 > aIndex)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_RRUNARRAY_SET, "EInvalidTextRunIndex" );
+	    }
 	__ASSERT_DEBUG(0 <= aIndex, TmPanic(EInvalidTextRunIndex));
 
 	if (aLength == 0)
@@ -673,6 +723,10 @@
 
 void CTmTextImp::RRunArray::Delete(TInt aPos,TInt aLength)
 	{
+	if (0 > aLength)
+	    {
+	    OstTrace0( TRACE_DUMP, RRUNARRAY_DELETE, "EInvalidTextRunLength" );
+	    }
 	__ASSERT_DEBUG(0 <= aLength, TmPanic(EInvalidTextRunLength));
 
 	if (aLength == 0)
--- a/textrendering/textformatting/tagma/TmBufferBase.cpp	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/tagma/TmBufferBase.cpp	Tue Jul 06 16:23:19 2010 +0300
@@ -15,6 +15,11 @@
 *
 */
 
+#include "TMSTD.H"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "TmBufferBaseTraces.h"
+#endif
 
 #include "TMSTD.H"
 
@@ -26,7 +31,10 @@
 void CTmBufferBase::Truncate(TInt aLength)
 	{
 	if (aLength > iLength || aLength < 0)
+	    {
+	    OstTrace0( TRACE_FATAL, CTMBUFFERBASE_TRUNCATE, "EBadTruncationLength" );
 		TmPanic(EBadTruncationLength);
+		}
 	iLength = aLength;
 	}
 
--- a/textrendering/textformatting/tagma/TmChunk.cpp	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/tagma/TmChunk.cpp	Tue Jul 06 16:23:19 2010 +0300
@@ -20,6 +20,11 @@
 #include "InlineText.h"
 #include "frmUtils.h"
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "TmChunkTraces.h"
+#endif
+
 
 TTmChunk::TTmChunk():
 	iDocPos(0),
@@ -496,6 +501,10 @@
 			measure - (iInitialInlineWidth + iFinalInlineWidth), &text_metrics);
 		// Check WidthL (probably MeasureText inside it) doesn't come back
 		// with a value larger than the max we specified - shouldn't happen
+		if (text_metrics.iChars > iTextLength)
+		    {
+		    OstTrace0( TRACE_DUMP, TTMCHUNK_SETL, "EInvariant" );
+		    }
 		__ASSERT_DEBUG(text_metrics.iChars <= iTextLength, TmPanic(EInvariant));
 		if (text_metrics.iChars < iTextLength)
 			{
--- a/textrendering/textformatting/tagma/TmHighlightSource.cpp	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/tagma/TmHighlightSource.cpp	Tue Jul 06 16:23:19 2010 +0300
@@ -18,6 +18,11 @@
 
 #include "TmHighlightSource.h"
 #include <txtfrmat.h>
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "TmHighlightSourceTraces.h"
+#endif
+
 
 // MTmSource derivatives that can draw text in the appropriate highlight colours
 
@@ -45,6 +50,7 @@
 	if(!iTmTextDrawExt)
 		{
 		iTmTextDrawExt = &iTmTextDrawExtDefault;
+		OstTrace0( TRACE_FATAL, TTMHIGHLIGHTSOURCE_TTMHIGHLIGHTSOURCE, "Invariant" );
 		}
 	__ASSERT_ALWAYS(iTmTextDrawExt, User::Invariant());
 
--- a/textrendering/textformatting/tagma/TmLine.cpp	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/tagma/TmLine.cpp	Tue Jul 06 16:23:19 2010 +0300
@@ -22,6 +22,11 @@
 #include "InlineText.h"
 #include "frmUtils.h"
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "TmLineTraces.h"
+#endif
+
 inline TBool IsSurrogate(TText a) { return 0xD800 == (a & 0xF800); }
 inline TBool IsHighSurrogate(TText a) { return 0xD800 == (a & 0xFC00); }
 inline TBool IsLowSurrogate(TText a) { return 0xDC00 == (a & 0xFC00); }
@@ -606,6 +611,10 @@
 		if (chunk.iOverlappingChars > 0 && ! chunkInfo.iAtLineEnd && ! chunkInfo.iAtParEnd)
 			{
 			aStartChar -= chunk.iOverlappingChars;
+			if (aStartChar < 0)
+			    {
+			    OstTrace0( TRACE_DUMP, CTMLINE_APPENDCHUNKL, "EInvariant" );
+			    }
 			__ASSERT_DEBUG(aStartChar >= 0, TmPanic(EInvariant));
 			}
 
@@ -989,12 +998,20 @@
 void CTmLine::WriteInlineTextL(CTmFormatContext& aContext, CTmCode& aCode, TInt aPos, TInt aInlineWidth, TBool aLeadingEdge, TInt aInlineFormat)
 	{
 	MTmInlineTextSource* inlineTextApi = (MTmInlineTextSource*)aContext.iSource.GetExtendedInterface(KInlineTextApiExtensionUid);
+	if (inlineTextApi==0)
+	    {
+	    OstTrace0( TRACE_DUMP, CTMLINE_WRITEINLINETEXTL, "EInvariant" );
+	    }
 	__ASSERT_DEBUG(inlineTextApi!=0,TmPanic(EInvariant));
 
 	TTmDocPos startDocPos(aPos, aLeadingEdge);
 	TPtrC inlineText = inlineTextApi->GetInlineText(startDocPos);
 	TUint8 op2 = TTmInterpreter::EOpInlineText;
 	TInt inlineLength = inlineText.Length();
+	if (inlineLength > TTmInterpreter::EMaxInlineChars)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CTMLINE_WRITEINLINETEXTL, "EInvariant" );
+	    }
 	__ASSERT_DEBUG(inlineLength <= TTmInterpreter::EMaxInlineChars,TmPanic(EInvariant));
 	if (inlineLength > 1)
 		op2 |= TTmInterpreter::EModCount;
--- a/textrendering/textformatting/tbox/CARET.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/tbox/CARET.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -20,6 +20,11 @@
 #include "FRMLAYDT.H"
 #include "FRMCONST.H"
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "CARETTraces.h"
+#endif
+
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
 #include "FRMCONST_INTERNAL.H"
 #include "FRMCONST_PARTNER.H"
@@ -37,6 +42,11 @@
 
 void TCursorPosition::CheckSelection(TBool aSelect)
 	{
+	if (IsSelection() && iDocPos.iPos == iAnchor)
+	    {
+	    OstTrace0( TRACE_DUMP, TCURSORPOSITION_CHECKSELECTION, "EFSelectedRangeZeroLen" );
+	    }
+	    
 	__ASSERT_DEBUG(!IsSelection() || iDocPos.iPos != iAnchor,FormPanic(EFSelectedRangeZeroLen));
 	CheckNullSelection();
 	TUint drawSelectionFlags = 0;
@@ -107,6 +117,10 @@
 	TInt extraScroll;
 	TBool cursorVisible = EFalse;
 
+	if (aSelection.iCursorPos<0 || aSelection.iCursorPos>iLayout->DocumentLength())
+	    {
+	    OstTrace0( TRACE_DUMP, TCURSORPOSITION_SETSELECTIONL, "EFInvalidDocPos" );
+	    }
 	__ASSERT_DEBUG(aSelection.iCursorPos>=0 && aSelection.iCursorPos<=iLayout->DocumentLength()
 																		,FormPanic(EFInvalidDocPos));
 	iLayout->PosRangeInBand(firstVisChar);
@@ -287,6 +301,10 @@
 	CheckSelection(aDragSelectOn);
 	DoSetXyPos(aPos);
 	TRAPD(ret,pixels=CheckCursorOnScreenL(aPos.iY));
+	if (ret)
+	    {
+	    OstTrace0( TRACE_FATAL, TCURSORPOSITION_SETXYPOSL, "EFShouldNotLeave" );
+	    }
 	__ASSERT_ALWAYS(!ret,FormPanic(EFShouldNotLeave));
 	UpdateLatentX(aPos.iX);
 	UpdateLatentY(aPos.iY);
@@ -548,6 +566,10 @@
 TBool TCursorPosition::LeftRightL(TTmPosInfo2& aPos, TTmLineInfo& aLine, TMovementType& aMove)
 	{
 	TTmPosInfo2 posInfo;
+	if (!(aMove == EFLeft || aMove == EFRight))
+	    {
+	    OstTrace0( TRACE_DUMP, TCURSORPOSITION_LEFTRIGHTL, "EFIncorrectCursorMovement" );
+	    }
 	__ASSERT_DEBUG(aMove == EFLeft || aMove == EFRight,
 		FormPanic(EFIncorrectCursorMovement));
 	TBool found = EFalse;
@@ -613,6 +635,10 @@
 @param aLine Returns details of the line containing aPos.*/
 void TCursorPosition::StartEnd(TTmPosInfo2& aPos, TTmLineInfo& aLine, TMovementType& aMove)
 	{
+	if (aMove != EFLineBeg && aMove != EFLineEnd)
+	    {
+	    OstTrace0( TRACE_DUMP, TCURSORPOSITION_STARTEND, "EFIncorrectCursorMovement" );
+	    }
 	__ASSERT_DEBUG(aMove == EFLineBeg || aMove == EFLineEnd,
 		FormPanic(EFIncorrectCursorMovement));
 	iLayout->FindDocPos(iDocPos, aPos, &aLine);
@@ -632,6 +658,10 @@
 @param aLine returns details of the line containing aPos. */
 void TCursorPosition::UpDownL(TTmPosInfo2& aPos, TTmLineInfo& aLine, TMovementType& aMove)
 	{
+	if (aMove != EFLineUp && aMove != EFLineDown)
+	    {
+	    OstTrace0( TRACE_DUMP, TCURSORPOSITION_UPDOWNL, "EFIncorrectCursorMovement" );
+	    }
 	__ASSERT_DEBUG(aMove == EFLineUp || aMove == EFLineDown,
 		FormPanic(EFIncorrectCursorMovement));
 	iLayout->FindDocPos(iDocPos, aPos, &aLine);
@@ -677,6 +707,10 @@
 // Move the display one page and put the cursor back in the same place (as far as possible).
 TInt TCursorPosition::PageScrollL(TMovementType& aMove)
 	{
+	if (aMove!=EFPageUp && aMove!=EFPageDown)
+	    {
+	    OstTrace0( TRACE_DUMP, TCURSORPOSITION_PAGESCROLLL, "EFIncorrectCursorMovement" );
+	    }
 	__ASSERT_DEBUG(aMove==EFPageUp || aMove==EFPageDown,FormPanic(EFIncorrectCursorMovement));
 	TPoint scrPos;
 	TInt pixelsScrolled;
@@ -725,6 +759,10 @@
 	TInt pixels=0;
 
 	iLayout->GetLineRect(aY,cursorLine);
+	if (cursorLine.iTl.iY>aY || cursorLine.iBr.iY<aY)
+	    {
+	    OstTrace0( TRACE_DUMP, TCURSORPOSITION_CHECKCURSORONSCREENL, "EFPixelNotInFormattedLine" );
+	    }
 	__ASSERT_DEBUG(cursorLine.iTl.iY<=aY && cursorLine.iBr.iY>=aY,FormPanic(EFPixelNotInFormattedLine));
 	if (cursorLine.iTl.iY<0 && cursorLine.iBr.iY<botRow)
 		linesToScroll=1;
@@ -736,7 +774,16 @@
 
 		aY+=pixels;
 		}
+	if (aY<0 && aY>=botRow)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_TCURSORPOSITION_CHECKCURSORONSCREENL, "EFCursorOffDisplay" );
+	    }
 	__ASSERT_DEBUG(aY>=0 || aY<botRow,FormPanic(EFCursorOffDisplay));
+	if (!(cursorLine.Height()>=botRow || cursorLine.iBr.iY>=botRow 
+	        || (cursorLine.iTl.iY+pixels>=0 && cursorLine.iBr.iY+pixels<=botRow)) )
+	    {
+	    OstTrace0( TRACE_DUMP, DUP2_TCURSORPOSITION_CHECKCURSORONSCREENL, "EFCursorOffDisplay" );
+	    }
 	__ASSERT_DEBUG(cursorLine.Height()>=botRow || cursorLine.iBr.iY>=botRow 
 		|| (cursorLine.iTl.iY+pixels>=0 && cursorLine.iBr.iY+pixels<=botRow),FormPanic(EFCursorOffDisplay));
 	return pixels;
--- a/textrendering/textformatting/tbox/FRMPAGE.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/tbox/FRMPAGE.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -21,6 +21,11 @@
 #include "FRMCONST.H"
 #include <txtlaydc.h>
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "FRMPAGETraces.h"
+#endif
+
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
 #include "FRMCONST_INTERNAL.H"
 #include "FRMCONST_PARTNER.H"
@@ -91,6 +96,10 @@
 @param aPrinterDevice The printer device. */
 EXPORT_C void CTextPaginator::SetPrinterDevice(CPrinterDevice* aPrinterDevice)
 	{
+	if (!iLayout)
+	    {
+	    OstTrace0( TRACE_FATAL, CTEXTPAGINATOR_SETPRINTERDEVICE, "EFDocumentToPaginateNotSet" );
+	    }
  	__ASSERT_ALWAYS(iLayout,FormPanic(EFDocumentToPaginateNotSet));
 	iPrinterDevice=aPrinterDevice;
 	iLayout->SetImageDeviceMap(aPrinterDevice);
@@ -168,6 +177,10 @@
 Note: SetDocumentL() must have been called beforehand, or a panic occurs. */
 EXPORT_C void CTextPaginator::PaginateCompleteDocumentL()
 	{
+	if (!iLayout)
+	    {
+	    OstTrace0( TRACE_FATAL, CTEXTPAGINATOR_PAGINATECOMPLETEDOCUMENTL, "EFDocumentToPaginateNotSet" );
+	    }
  	__ASSERT_ALWAYS(iLayout,FormPanic(EFDocumentToPaginateNotSet));
   	if (iPageList->Count()==0)
 		iPageList->AppendL(iLayDoc->LdDocumentLength());
@@ -196,7 +209,15 @@
 @return A count of the current number of pages. */
 EXPORT_C TInt CTextPaginator::AppendTextL(TInt& aCumulativeDocPos)
 	{
+	if (!iLayout)
+	    {
+	    OstTrace0( TRACE_FATAL, CTEXTPAGINATOR_APPENDTEXTL, "EFDocumentToPaginateNotSet" );
+	    }
 	__ASSERT_ALWAYS(iLayout,FormPanic(EFDocumentToPaginateNotSet));
+	if (aCumulativeDocPos>=iLayout->DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CTEXTPAGINATOR_APPENDTEXTL, "EFInvalidDocPos" );
+	    }
  	__ASSERT_ALWAYS(aCumulativeDocPos<iLayout->DocumentLength(),FormPanic(EFInvalidDocPos));
  	iMode=EFPaginateIncrementally;
 
@@ -227,7 +248,9 @@
 
 	TRAPD(err,CopyTempPageListL());
 	if (err)
+	    {
 		LeaveL(err);
+	    }
 	return iPageList->Count();
 	}
 
@@ -457,6 +480,10 @@
 // Copies temp page list to one that external user sees
 //
 	{
+	if (iTempPageList->Count()<1 && iMode!=EFPaginateIncrementally)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTPAGINATOR_COPYTEMPPAGELISTL, "EFPageListEmpty" );
+	    }
 	__ASSERT_DEBUG(iTempPageList->Count()>=1||iMode==EFPaginateIncrementally,FormPanic(EFPageListEmpty));
 	TRAPD(err,iPageList->ResizeL(iTempPageList->Count()));
 	if (err)
@@ -486,6 +513,8 @@
 	if (iObserver)
 		iObserver->NotifyError(aErr);
 
+	OstTrace1( TRACE_FATAL, CTEXTPAGINATOR_LEAVEL, "CTextPaginator::LeaveL;aErr=%d", aErr );
+	
 	User::Leave(aErr);
 	}
 
--- a/textrendering/textformatting/tbox/FRMPRINT.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/tbox/FRMPRINT.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -19,6 +19,11 @@
 #include "FRMPRINT.H"
 #include "FRMCONST.H"
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "FRMPRINTTraces.h"
+#endif
+
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
 #include "FRMCONST_INTERNAL.H"
 #include "FRMCONST_PARTNER.H"
@@ -152,7 +157,19 @@
 // Traps leaves
 //
 	{
+	if (!iPageList)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CTEXTPAGEREGIONPRINTER_PRINTBANDL, "EFInvalidPageList" );
+	    }
 	__ASSERT_ALWAYS(iPageList!=NULL,FormPanic(EFInvalidPageList));
+	if (aPageNo-iFirstPage>=iPageList->Count())
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTPAGEREGIONPRINTER_PRINTBANDL, "EFInvalidPageNumber" );
+	    }
+	if (aPageNo<iFirstPage)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP2_CTEXTPAGEREGIONPRINTER_PRINTBANDL, "EFInvalidPageNumber" );
+	    }
 	__ASSERT_DEBUG(aPageNo-iFirstPage<iPageList->Count(),FormPanic(EFInvalidPageNumber));
 	__ASSERT_DEBUG(aPageNo>=iFirstPage,FormPanic(EFInvalidPageNumber));
 
@@ -384,7 +401,8 @@
 
 	delete iPictureGc;
 	iPictureGc=NULL;
-
+	
+	OstTrace1( TRACE_FATAL, CTEXTPAGEREGIONPRINTER_LEAVEL, "CTextPageRegionPrinter::LeaveL;aErr=%d", aErr );
 	User::Leave(aErr);
 	}
 
--- a/textrendering/textformatting/tbox/FRMSCRND.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/tbox/FRMSCRND.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -20,6 +20,11 @@
 #include "FRMCONST.H"
 #include "FORMUTIL.H"
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "FRMSCRNDTraces.h"
+#endif
+
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
 #include "FRMCONST_INTERNAL.H"
 #include "FRMCONST_PARTNER.H"
@@ -104,6 +109,10 @@
 	//Create and activate the main Graphics Context
 	//
 	{
+	if (iGc)
+	    {
+	    OstTrace0( TRACE_DUMP, RSCREENDISPLAY_CREATECONTEXTL, "EFGcNotSet" );
+	    }
 	__ASSERT_DEBUG(iGc==NULL,FormPanic(EFGcNotSet));
 	User::LeaveIfError(iGd->CreateBitmapContext(iGc));
 	if (iWin)
--- a/textrendering/textformatting/tbox/FRMTVIEW.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/tbox/FRMTVIEW.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -20,6 +20,11 @@
 #include "FRMTVIEW.H"
 #include "FRMCONST.H"
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "FRMTVIEWTraces.h"
+#endif
+
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
 #include "FRMCONST_INTERNAL.H"
 #include "FRMCONST_PARTNER.H"
@@ -265,6 +270,10 @@
 
 void TCursor::DrawLineCursor(TInt aHeight)
 	{
+	if (!iLineCursorBitmap)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_TCURSOR_DRAWLINECURSOR, "EFLineCursorBitmapNotSet" );
+	    }
 	__ASSERT_ALWAYS(iLineCursorBitmap,FormPanic(EFLineCursorBitmapNotSet));
 	TRect cursorMargin=iDisplay.LineCursorMargin();
 	TRect bitmapRect;
@@ -407,6 +416,10 @@
 	iHorizontalScroll(EFNoPreviousHorizontalScroll),
 	iContextIsNavigation(ETrue)
 	{
+	if (EFMemoryOK == EFRecovering)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_CTEXTVIEW, "EFSystemConstantsChanged" );
+	    }
 	__ASSERT_DEBUG(EFMemoryOK != EFRecovering,FormPanic(EFSystemConstantsChanged));
 	}
 
@@ -414,6 +427,10 @@
 									MGraphicsDeviceMap *aDeviceMap,RWindow *aWin,RWindowGroup *aGroupWin,
 									RWsSession *aSession)
 	{
+	if (!aLayout)
+	    {
+	    OstTrace0( TRACE_FATAL, CTEXTVIEW_CONSTRUCTL, "EFInvalidLayout" );
+	    }
 	__ASSERT_ALWAYS(aLayout,FormPanic(EFInvalidLayout));
 	iHorizontalScrollJump=EFDefaultHorizontalScrollJump;
 	iWrap = CIdle::NewL(EFBackgroundFormattingPriority);
@@ -438,6 +455,10 @@
 not be NULL or a panic occurs. */
 EXPORT_C void CTextView::SetLayout(CTextLayout *aLayout)
 	{
+	if (!aLayout)
+	    {
+	    OstTrace0( TRACE_FATAL, CTEXTVIEW_SETLAYOUT, "EFInvalidLayout" );
+	    }
 	__ASSERT_ALWAYS(aLayout,FormPanic(EFInvalidLayout));
 	iLayout = aLayout;
 	iCursorPos.SetLayout(aLayout);
@@ -754,7 +775,11 @@
 	TRAPD(err,iLayout->GetFontHeightAndAscentL(aFontSpec,fontHeight,fontAscent));
 	if (!err)
 		iCursor.SetAscentAndDescent(fontAscent,fontHeight - fontAscent);
-	User::LeaveIfError(err);
+	if (err)
+	    {
+        OstTrace1( TRACE_FATAL, CTEXTVIEW_MATCHCURSORHEIGHTL, "Leave code=%d", err );
+        User::Leave(err);
+	    }
 	}
 
 /** Gets the current selection.
@@ -782,6 +807,10 @@
 	{
 	if (iCursorPos.IsPictureFrame())
 		{
+		if (!iPictureFrame)
+		    {
+		    OstTrace0( TRACE_DUMP, CTEXTVIEW_ISPICTUREFRAMESELECTED, "EFNoPictureFrame" );
+		    }
 		__ASSERT_DEBUG(iPictureFrame,FormPanic(EFNoPictureFrame));
 		aPictureFrameRect=iPictureFrame->Rect();
 		aDocPos=Selection().LowerPos();
@@ -935,7 +964,15 @@
 		return selection;
 		}
 
+	if (selection.iCursorPos >= anchor)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_GETFORWARDDELETEPOSITIONL, "selection.iCursorPos >= anchor" );
+	    }
 	__ASSERT_DEBUG(selection.iCursorPos < anchor, User::Invariant());
+	if (selection.Length())
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CTEXTVIEW_GETFORWARDDELETEPOSITIONL, "selection.Length()!=0" );
+	    }
 	__ASSERT_DEBUG(selection.Length() == 0, User::Invariant());
 
 	// Now we have found the next formatted position. However, this
@@ -948,6 +985,10 @@
 	TBool ignoreNextSpacingCharacter = EFalse;
 	for (TInt i = selection.iCursorPos; i != anchor; ++i)
 		{
+		if (i >= anchor)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP2_CTEXTVIEW_GETFORWARDDELETEPOSITIONL, "i >= anchor" );
+		    }
 		__ASSERT_DEBUG(i < anchor, User::Invariant());
 		TChar c = sourceCache.GetUtf32(i);
 		if ( IsGraphicalSpacing(c) )
@@ -1014,8 +1055,15 @@
 		selection.iAnchorPos = 0;
 		return selection;
 		}
-
+	if (anchor >= selection.iCursorPos)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_GETBACKWARDDELETEPOSITIONL, "anchor >= selection.iCursorPos" );
+	    }
 	__ASSERT_DEBUG(anchor < selection.iCursorPos, User::Invariant());
+	if (selection.Length() != 0)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CTEXTVIEW_GETBACKWARDDELETEPOSITIONL, "selection.Length() != 0" );
+	    }
 	__ASSERT_DEBUG(selection.Length() == 0, User::Invariant());
 
 	// If this cluster is a ligature, it needs to be split.
@@ -1088,6 +1136,10 @@
 background formatting. Enters OOM before leaving. */
 void CTextView::DisplayNewLinesL(TInt aFrom,TInt aTo)
 	{
+	if (iNoMemory)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_DISPLAYNEWLINESL, "EFNoMemory" );
+	    }
 	__ASSERT_DEBUG(!iNoMemory,FormPanic(EFNoMemory));
 	if (aTo>iGood)
 		{
@@ -1419,13 +1471,31 @@
  	TBool formatting = IsFormatting();
 	TBool moreToDo = ETrue;
 
+	if (iCursorPos.IsSelection())
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_HANDLECHAREDITL, "EFSelectionCannotCharEdit" );
+	    }
 	__ASSERT_DEBUG(!iCursorPos.IsSelection(),FormPanic(EFSelectionCannotCharEdit));
+	if (aType>CTextLayout::EFRightDelete)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CTEXTVIEW_HANDLECHAREDITL, "EFBadCharacterEditType" );
+	    }
 	__ASSERT_DEBUG(aType<=CTextLayout::EFRightDelete,FormPanic(EFBadCharacterEditType));
+	if ( !(!aFormatChanged || aType==CTextLayout::EFRightDelete 
+                            || aType==CTextLayout::EFLeftDelete) )
+	    {
+	    OstTrace0( TRACE_DUMP, DUP2_CTEXTVIEW_HANDLECHAREDITL, "EFBadCharacterEditType" );
+	    }
 	__ASSERT_DEBUG(!aFormatChanged || aType==CTextLayout::EFRightDelete 
 							|| aType==CTextLayout::EFLeftDelete,FormPanic(EFBadCharacterEditType));
 	TBool recovered=NoMemoryCheckL();
 	iCursor.MatchCursorHeightToAdjacentChar();
 	TPoint dummyPoint;
+	if ( !(iLayout->PosInBand(iCursorPos.TmDocPos(),dummyPoint)
+	        || !formatting) )
+	    {
+	    OstTrace0( TRACE_DUMP, DUP3_CTEXTVIEW_HANDLECHAREDITL, "EFBackgroundFormatting" );
+	    }
 	__ASSERT_DEBUG(iLayout->PosInBand(iCursorPos.TmDocPos(),dummyPoint)
 		|| !formatting, FormPanic(EFBackgroundFormatting));
 	TTmDocPos doc_pos = iCursorPos.TmDocPos();
@@ -1550,7 +1620,15 @@
 		iDisplay.DeactivateContext();
 		}
 	iDisplay.SetRects(RScreenDisplay::EFClipViewRect);
+	if (from>viewChanges.iFormattedFrom && from>0)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CTEXTVIEW_HANDLEBLOCKCHANGEL, "EFScrollError" );
+	    }
 	__ASSERT_DEBUG(from<=viewChanges.iFormattedFrom || from<=0,FormPanic(EFScrollError));
+	if (to<viewChanges.iFormattedTo && to<iDrawTextLayoutContext.DisplayHeight())
+	    {
+	    OstTrace0( TRACE_DUMP, DUP2_CTEXTVIEW_HANDLEBLOCKCHANGEL, "EFScrollError" );
+	    }
 	__ASSERT_DEBUG(to>=viewChanges.iFormattedTo || to>=iDrawTextLayoutContext.DisplayHeight(),FormPanic(EFScrollError));
 	if (from>0)
 		DisplayLineRangeL(0,from);
@@ -2183,7 +2261,15 @@
 	TRect rect;
 	TInt height=iDrawTextLayoutContext.DisplayHeight();
 
+	if (aScrollX==0 && aScrollY==0)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_SCROLLTEXTL, "EFScrollByZero2" );
+	    }
 	__ASSERT_DEBUG(aScrollX!=0 || aScrollY!=0,FormPanic(EFScrollByZero2));
+	if (aFrom!=0 && aScrollX!=0)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CTEXTVIEW_SCROLLTEXTL, "EFScrollError" );
+	    }
 	__ASSERT_DEBUG(aFrom==0 || aScrollX==0,FormPanic(EFScrollError));       //Can only scroll the whole of the ViewRect Horizontally
 	if (aScrollX==0)
 		rect=iDrawTextLayoutContext.iViewRect;
@@ -2237,6 +2323,10 @@
 
 	TInt top=rect.iTl.iY;
 
+	if (aTo<0 || aTo<=aFrom)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_SCROLLRECT, "EFScrollError" );
+	    }
 	__ASSERT_DEBUG(aTo>=0 && aTo>aFrom,FormPanic(EFScrollError));
 	aFrom-=aScrollY;
 	if (aFrom>0)
@@ -2335,7 +2425,6 @@
 	if (needInverting && !iDrawTextLayoutContext.TextOverrideColor() && (iFlags & EFTextVisible))
 		{
 	 	TCursorSelection selection;
-
 		__ASSERT_DEBUG(iLayout->__DbgIsFormattingUpToDate(),FormPanic(EFFormatOutOfDate));
 		iFlags |= EFSelectionVisible;
 		iCursorPos.GetSelection(selection);
@@ -2497,6 +2586,10 @@
 	{
 	if (NoMemoryCheckL())
 		aDiscardFormat = CTextView::EFViewDontDiscardFullRedraw;
+	if (aDocPos < 0 || aDocPos > iLayout->DocumentLength())
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_SETVIEWL, "EFInvalidDocPos" );
+	    }
 	__ASSERT_ALWAYS(aDocPos >= 0 && aDocPos <= iLayout->DocumentLength(),FormPanic(EFInvalidDocPos));
 	aYPos -= TopViewRect();
 	TTmDocPos pos(aDocPos,
@@ -2626,6 +2719,10 @@
 HandleCharEditL() instead. */
 EXPORT_C void CTextView::HandleAdditionalCharactersAtEndL()
 	{
+	if (IsFormatting())
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_HANDLEADDITIONALCHARACTERSATENDL, "EFBackgroundFormatting" );
+	    }
 	__ASSERT_DEBUG(!IsFormatting(),FormPanic(EFBackgroundFormatting));
 	if (!NoMemoryCheckL())
 		{
@@ -2723,8 +2820,16 @@
 	{
 	TInt visPos;
 	TInt visLen=iLayout->PosRangeInBand(visPos);
-
+	
+	if (visLen<0)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_HIGHLIGHTUSINGEXTENSIONS, "EFNoMemory" );
+	    }
 	__ASSERT_DEBUG(visLen>=0,FormPanic(EFNoMemory));  //  Shouldn't be in OOM here.
+	if (!SelectionVisible())
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CTEXTVIEW_HIGHLIGHTUSINGEXTENSIONS, "EFSelectionNotVisible" );
+	    }
 	__ASSERT_DEBUG(SelectionVisible(),FormPanic(EFSelectionNotVisible));
 
 	if (!aOptimizedRange.Clip(visPos, visPos + visLen))
@@ -2833,6 +2938,10 @@
 */
 void CTextView::DrawPictureFrameL(TRect& aClipRect)
 	{
+	if (!iCursorPos.IsPictureFrame())
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_DRAWPICTUREFRAMEL, "EFNoPictureFrame" );
+	    }
 	__ASSERT_DEBUG(iCursorPos.IsPictureFrame(),FormPanic(EFNoPictureFrame));
 	TCursorSelection selection;
 	iCursorPos.GetSelection(selection);
@@ -2858,6 +2967,10 @@
 /** Enters the OOM state. */
 void CTextView::NoMemoryL(TInt aError)
 	{
+	if (iNoMemory==EFOutOfMemory)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_NOMEMORYL, "EFNoMemory" );
+	    }
 	__ASSERT_DEBUG(iNoMemory!=EFOutOfMemory,FormPanic(EFNoMemory));
 	iLayout->DiscardFormat();
 	if (iNoMemory==EFMemoryOK)
@@ -2885,6 +2998,10 @@
 	{
 	TBool recovered=iNoMemory;
 
+	if (iNoMemory==EFRecovering)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_NOMEMORYCHECKL, "EFRecoverNoMemory" );
+	    }
 	__ASSERT_DEBUG(iNoMemory!=EFRecovering,FormPanic(EFRecoverNoMemory));
 	if (iNoMemory)
 		RecoverNoMemoryL();
@@ -2895,7 +3012,10 @@
 Enters OOM before leaving */
 void CTextView::RecoverNoMemoryL()
 	{
-
+	if (iNoMemory!=EFOutOfMemory)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_RECOVERNOMEMORYL, "EFRecoverNoMemory" );
+	    }
 	__ASSERT_DEBUG(iNoMemory==EFOutOfMemory,FormPanic(EFRecoverNoMemory));
 	iNoMemory=EFRecovering;
 	RecreateWindowServerObjectsL();
@@ -2904,6 +3024,10 @@
 	if (pos.iPos > end.iPos)
 		iCursorPos.SetDocPos(end);
 	ViewL(iCursorPos.TmDocPos(),iGood);
+	if (iNoMemory!=EFRecovering)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CTEXTVIEW_RECOVERNOMEMORYL, "EFNoMemory" );
+	    }
 	__ASSERT_DEBUG(iNoMemory==EFRecovering,FormPanic(EFNoMemory));
 	iNoMemory=EFMemoryOK;
 	iGood=0;
@@ -2928,6 +3052,10 @@
 cause the view to scroll. Must be a positive value or a panic occurs. */
 EXPORT_C void CTextView::SetHorizontalScrollJump(TInt aScrollJump)
 	{
+	if (aScrollJump<0)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_SETHORIZONTALSCROLLJUMP, "EFInvalidJumpValue" );
+	    }
 	__ASSERT_ALWAYS(aScrollJump>=0,FormPanic(EFInvalidJumpValue));
 	__ASSERT_DEBUG(aScrollJump<EFUnreasonablyLargeHorizontalScrollJump
 																	,FormPanic(EFInvalidJumpValue));
@@ -3238,7 +3366,10 @@
 	RDrawTextSupport support(&iDisplay, &iDrawTextLayoutContext, bitmap);
 	CleanupClosePushL(support);
 	if (error)
-		User::Leave(error);
+	    {
+	    OstTrace1( TRACE_DUMP, CTEXTVIEW_DODRAWTEXTSUPPORTL, "Leave code=%d", error );
+	    User::Leave(error);
+	    }
 
 	// If we are flicker-free drawing (and there was enough memory for it) or
 	// drawing to an off screen bitmap for some other reason, set up
--- a/textrendering/textformatting/tbox/FormLinePag.cpp	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/tbox/FormLinePag.cpp	Tue Jul 06 16:23:19 2010 +0300
@@ -19,6 +19,11 @@
 #include "FRMPAGE.H"
 #include "FRMCONST.H"
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "FormLinePagTraces.h"
+#endif
+
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
 #include "FRMCONST_INTERNAL.H"
 #include "FRMCONST_PARTNER.H"
@@ -93,6 +98,10 @@
 	iHeightRem=iPageHeight;
 	iKeepWithPrev=EFalse;
 	TInt deltaDocPos=iDocPos-iPrevPageBreak; 
+	if (deltaDocPos<=0)
+	    {
+	    OstTrace0( TRACE_DUMP, TLINEPAGINATOR_INSERTPAGEBREAKL, "EFInvalidNumberCharsOnPage" );
+	    }
 	__ASSERT_DEBUG(deltaDocPos>0,FormPanic(EFInvalidNumberCharsOnPage));
 	iPageList->AppendL(deltaDocPos);
 	iPrevPageBreak=iDocPos;
--- a/textrendering/textformatting/tbox/LAYEMU.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/tbox/LAYEMU.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -29,6 +29,11 @@
 #include "FRMTLAY_INTERNAL.H"
 #endif
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "LAYEMUTraces.h"
+#endif
+
 const TInt KMaxExtraLines = 10; // maximum number of lines to format after the current and following lines
 								// before using background formatting
 // during page down/up, the number of lines that should remain visible after
@@ -210,7 +215,11 @@
 	{
 	if(!iReadyToRedraw)
 		return;
-
+	
+	if (iBeginRedrawCount <= 0)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTLAYOUT_ENDREDRAW, "CTextLayout::EndRedraw" );
+	    }
 	__ASSERT_ALWAYS(iBeginRedrawCount > 0, Panic(EInvalidRedraw));
 
 	if (0 == --iBeginRedrawCount)
@@ -230,6 +239,10 @@
 
 void CTextLayout::SetExternalDraw(const TRect& aRect)
 	{
+	if (0 != iBeginRedrawCount)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CTEXTLAYOUT_SETEXTERNALDRAW, "EInvalidRedraw" );
+	    }
 	__ASSERT_ALWAYS(0 == iBeginRedrawCount, Panic(EInvalidRedraw));
 	iBeginRedrawCount++;
 	iRedrawRect = aRect;
@@ -237,6 +250,10 @@
 
 void CTextLayout::ResetExternalDraw()
 	{
+	if (1 != iBeginRedrawCount)
+	    {
+	    OstTrace0( TRACE_FATAL, CTEXTLAYOUT_RESETEXTERNALDRAW, "EInvalidRedraw" );
+	    }
 	__ASSERT_ALWAYS(1 == iBeginRedrawCount, Panic(EInvalidRedraw));
 
 	iBeginRedrawCount--;
@@ -415,6 +432,10 @@
 	{
 	if (aFormatMode == CLayoutData::EFWysiwygMode || aFormatMode == CLayoutData::EFPrintPreviewMode)
 		{
+		if (aFormatDevice == NULL)
+		    {
+		    OstTrace0( TRACE_FATAL, CTEXTLAYOUT_SETFORMATMODE, "EFormatDeviceNotSet" );
+		    }
 		__ASSERT_ALWAYS(aFormatDevice != NULL,Panic(EFormatDeviceNotSet));
 		iSource->iFormatDevice = aFormatDevice;
 		}
@@ -777,6 +798,10 @@
 @return The document position of the first character on the line. */
 EXPORT_C TInt CTextLayout::FirstCharOnLine(TInt aLineNo) const
 	{
+	if (aLineNo <= 0)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTLAYOUT_FIRSTCHARONLINE, "EInvalidLineNumber" );
+	    }
 	__ASSERT_DEBUG(aLineNo > 0,Panic(EInvalidLineNumber));
 	if (iText->StartChar() == iText->EndChar())
 		return EFNoCurrentFormat;
@@ -1150,7 +1175,15 @@
 	if (iText->LayoutHeight() == 0)
 		return TRect(0,0,0,0);
 
+	if (!PosIsFormatted(aDocPos1))
+	    {
+	    OstTrace0( TRACE_FATAL, CTEXTLAYOUT_GETLINERECTL, "ECharacterNotFormatted" );
+	    }
 	__ASSERT_ALWAYS(PosIsFormatted(aDocPos1),Panic(ECharacterNotFormatted));
+	if (!PosIsFormatted(aDocPos2))
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CTEXTLAYOUT_GETLINERECTL, "ECharacterNotFormatted" );
+	    }
 	__ASSERT_DEBUG(PosIsFormatted(aDocPos2),Panic(ECharacterNotFormatted));
 
 	TTmDocPosSpec docSpec(aDocPos1, TTmDocPosSpec::ELeading);
@@ -1164,6 +1197,10 @@
 	// Getthe Line rectangle
 	GetLineRect(point.iY,rect);
 	
+	if (rect.iTl.iY > point.iY || rect.iBr.iY < point.iY)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP2_CTEXTLAYOUT_GETLINERECTL, "EPixelNotInFormattedLine" );
+	    }
 	__ASSERT_DEBUG(rect.iTl.iY <= point.iY && rect.iBr.iY >= point.iY,Panic(EPixelNotInFormattedLine));
 	
 	//	Finding the leading edge of aDocPos2
@@ -1575,6 +1612,10 @@
 */
 EXPORT_C void CTextLayout::ExtendFormattingToCoverPosL(TInt aDocPos)
 	{
+	if (0 > aDocPos || aDocPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTLAYOUT_EXTENDFORMATTINGTOCOVERPOSL, "EInvalidDocPos" );
+	    }
 	__ASSERT_DEBUG(0 <= aDocPos && aDocPos <= DocumentLength(),
 			Panic(EInvalidDocPos));
 	TTmFormatParam param;
@@ -1599,6 +1640,10 @@
 		{
 		iText->ExtendFormattingDownwardsL(param);
 		}
+	if ((aDocPos < iText->StartChar()) || (aDocPos > iText->EndChar()))
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CTEXTLAYOUT_EXTENDFORMATTINGTOCOVERPOSL, "ECharacterNotFormatted" );
+	    }
 	__ASSERT_DEBUG((aDocPos >= iText->StartChar()) && (aDocPos <= iText->EndChar()),
 			Panic(ECharacterNotFormatted));
 	}
@@ -1625,8 +1670,20 @@
 
 void CTextLayout::FormatCharRangeL(TInt aStartDocPos,TInt aEndDocPos,TInt aPixelOffset)
 	{
+	if (aStartDocPos < 0 && aStartDocPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTLAYOUT_FORMATCHARRANGEL, "EInvalidDocPos" );
+	    }
 	__ASSERT_DEBUG(aStartDocPos >= 0 && aStartDocPos <= DocumentLength(),Panic(EInvalidDocPos));
+	if (aEndDocPos < 0 || aEndDocPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CTEXTLAYOUT_FORMATCHARRANGEL, "EInvalidDocPos" );
+	    }
 	__ASSERT_DEBUG(aEndDocPos >= 0 && aEndDocPos <= DocumentLength(),Panic(EInvalidDocPos));
+	if (aStartDocPos > aEndDocPos)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP2_CTEXTLAYOUT_FORMATCHARRANGEL, "ENoCharRangeToFormat" );
+	    }
 	__ASSERT_DEBUG(aStartDocPos <= aEndDocPos,Panic(ENoCharRangeToFormat));
 
 	TTmFormatParam param;
@@ -1677,8 +1734,16 @@
 			TTmLineInfo info;
 			TTmDocPos pos(iUnformattedStart, ETrue);
 			TBool isFormatted = iText->DocPosToLine(pos,info);
+			if (!isFormatted)
+			    {
+			    OstTrace0( TRACE_DUMP, CTEXTLAYOUT_FORMATNEXTLINEL, "EPosNotFormatted" );
+			    }
 			__ASSERT_DEBUG(isFormatted, Panic(EPosNotFormatted));
 			isFormatted = iText->ParNumberToLine(info.iParNumber,KMaxTInt,info);
+			if (!isFormatted)
+			    {
+			    OstTrace0( TRACE_DUMP, DUP1_CTEXTLAYOUT_FORMATNEXTLINEL, "EPosNotFormatted" );
+			    }
 			__ASSERT_DEBUG(isFormatted, Panic(EPosNotFormatted));
 			aBottomPixel = info.iOuterRect.iBr.iY - iBandTop;
 			}
@@ -1866,7 +1931,10 @@
 				if (iText->YPosToLine(iBandTop,info))
 					top_line_number = info.iLineNumber;
 				else
+				    {
+					OstTrace0( TRACE_DUMP, DUP1_CTEXTLAYOUT_SCROLLLINESL, "EPosNotFormatted" );
 					User::Leave(EPosNotFormatted);
+					}
 				partial_line = iBandTop > info.iOuterRect.iTl.iY;
 				}
 
@@ -1896,7 +1964,10 @@
 		if (lines_scrolled)
 			{
 			if (!iText->LineNumberToLine(desired_top_line_number,info))
-				User::Leave(EPosNotFormatted);
+			    {
+			    OstTrace0( TRACE_DUMP, CTEXTLAYOUT_SCROLLLINESL, "EPosNotFormatted" );
+			    User::Leave(EPosNotFormatted);
+			    }
 			// if the line to be scrolled to is taller than the screen, we want
 			// to make sure that the baseline is not scrolled off the screen.
 			if (visible_height < info.iBaseline - info.iOuterRect.iTl.iY)
@@ -1913,7 +1984,10 @@
 			// If we are restricting scroll to the tops of lines, then lines at
 			// bottom are irrelevant, so all we do is lose the top line.
 			if (!iText->YPosToLine(iBandTop, info))
-				User::Leave(EPosNotFormatted);
+			    {
+			    OstTrace0( TRACE_DUMP, DUP2_CTEXTLAYOUT_SCROLLLINESL, "EPosNotFormatted" );
+			    User::Leave(EPosNotFormatted);
+			    }
 			return ScrollL(-info.iOuterRect.Height(), aScrollBlankSpace);
 			}
 
@@ -1936,7 +2010,10 @@
 			if (iText->YPosToLine(band_bottom - 1,info))
 				bottom_line_number = info.iLineNumber;
 			else
-				User::Leave(EPosNotFormatted);
+			    {
+			    OstTrace0( TRACE_DUMP, DUP3_CTEXTLAYOUT_SCROLLLINESL, "EPosNotFormatted" );
+			    User::Leave(EPosNotFormatted);
+			    }
 			partial_line = band_bottom < info.iOuterRect.iBr.iY;
 
 			// Find the line number of the desired last visible line.
@@ -1962,7 +2039,10 @@
 		if (lines_scrolled)
 			{
 			if (!iText->LineNumberToLine(desired_bottom_line_number,info))
-				User::Leave(EPosNotFormatted);
+			    {
+			    OstTrace0( TRACE_DUMP, DUP4_CTEXTLAYOUT_SCROLLLINESL, "EPosNotFormattedL" );
+			    User::Leave(EPosNotFormatted);
+			    }
 			return ScrollL(band_bottom - info.iOuterRect.iBr.iY,aScrollBlankSpace);
 			}
 		else
@@ -2158,8 +2238,16 @@
 		visible_height - 1
 		: SuggestCursorPos(aYCursorPos);
 
+	if (-visible_height > aPixelsScrolled)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTLAYOUT_PAGEDOWNL, "EPageScrollError" );
+	    }
 	__ASSERT_DEBUG(-visible_height <= aPixelsScrolled,
 		Panic(EPageScrollError));
+	if (0 > aYCursorPos || aYCursorPos > visible_height)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CTEXTLAYOUT_PAGEDOWNL, "EPageScrollError" );
+	    }
 	__ASSERT_DEBUG(0 <= aYCursorPos && aYCursorPos <= visible_height,
 		Panic(EPageScrollError));
 	}
@@ -2192,9 +2280,25 @@
 EXPORT_C TBool CTextLayout::HandleCharEditL(TUint aType,TInt& aCursorPos,TInt& aGood,TInt& aFormatBottom,
 											TInt& aFormatTop,TInt& aScroll,TBool aFormatFromStartOfPar)
 	{
+	if (iSource->iFormatMode == CLayoutData::EFPrintPreviewMode)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP2_CTEXTLAYOUT_HANDLECHAREDITL, "EPrintPreviewModeError" );
+	    }
 	__ASSERT_ALWAYS(iSource->iFormatMode != CLayoutData::EFPrintPreviewMode,Panic(EPrintPreviewModeError));
+	if (aType > EFRightDelete)
+	    {
+	    OstTrace0( TRACE_FATAL, CTEXTLAYOUT_HANDLECHAREDITL, "EBadCharacterEditType" );
+	    }
 	__ASSERT_ALWAYS(aType <= EFRightDelete,Panic(EBadCharacterEditType));
+	if (!(!aFormatFromStartOfPar || aType == EFRightDelete || aType == EFLeftDelete))
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CTEXTLAYOUT_HANDLECHAREDITL, "EBadCharacterEditType" );
+	    }
 	__ASSERT_ALWAYS(!aFormatFromStartOfPar || aType == EFRightDelete || aType == EFLeftDelete,Panic(EBadCharacterEditType));
+	if (aCursorPos < iText->StartChar() || aCursorPos >= iText->EndChar())
+	    {
+	    OstTrace0( TRACE_FATAL, DUP3_CTEXTLAYOUT_HANDLECHAREDITL, "ECharacterNotFormatted" );
+	    }
 	__ASSERT_ALWAYS(aCursorPos >= iText->StartChar() && aCursorPos < iText->EndChar(),Panic(ECharacterNotFormatted));
 
 	// Mark the entire paragraph invalid if background formatting is taking place.
@@ -2358,6 +2462,10 @@
 EXPORT_C void CTextLayout::HandleBlockChangeL(TCursorSelection aSelection,TInt aOldLength,
 											  TViewRectChanges& aChanges,TBool aFormatFromStartOfPar)
 	{
+	if (iSource->iFormatMode == CLayoutData::EFPrintPreviewMode)
+	    {
+	    OstTrace0( TRACE_FATAL, CTEXTLAYOUT_HANDLEBLOCKCHANGEL, "EPrintPreviewModeError" );
+	    }
 	__ASSERT_ALWAYS(iSource->iFormatMode != CLayoutData::EFPrintPreviewMode,Panic(EPrintPreviewModeError));
 
 	// Do nothing if the selection is outside the formatted range.
@@ -2484,6 +2592,11 @@
 	{
 	int excess = BandHeight() - FormattedHeightInPixels();
 	int space_before = 0;
+	
+	if (IsFormattingBand())
+	    {
+	    OstTrace0( TRACE_FATAL, CTEXTLAYOUT_ADJUSTVERTICALALIGNMENT, "EMustFormatAllText" );
+	    }
 	__ASSERT_ALWAYS(!IsFormattingBand(),Panic(EMustFormatAllText));
 	TTmLineInfo info;
 
@@ -2724,6 +2837,10 @@
 // Repeat draw, for double border.
 		if (aBorder.iBorder[border].iLineStyle==TParaBorder::EDouble)	 // Now have only got solid border, drawn as rect.
 			{
+			if (drawAsLine)
+			    {
+			    OstTrace0( TRACE_DUMP, CTEXTLAYOUT_DRAWBORDERS, "EDrawingBorderError" );
+			    }
 			__ASSERT_DEBUG(!drawAsLine,Panic(EDrawingBorderError));
 			(*ptrStartWidth)-=directionOut*widthInPixels[border];
 			(*ptrEndWidth)-=directionOut*widthInPixels[border];
@@ -4106,12 +4223,20 @@
 
 TInt CTextLayout::ScrollDocPosIntoViewL(const TTmDocPos& aDocPos)
 	{
+	if (aDocPos.iPos > iText->Source()->DocumentLength())
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTLAYOUT_SCROLLDOCPOSINTOVIEWL, "EInvalidDocPos" );
+	    }
 	__ASSERT_DEBUG(aDocPos.iPos <= iText->Source()->DocumentLength(),
 		Panic(EInvalidDocPos));
 	TTmLineInfo info;
 	ExtendFormattingToCoverPosL(aDocPos.iPos);
 	if (!iText->DocPosToLine(aDocPos,info))
 		{
+		if (iText->Source()->DocumentLength() != 0)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP1_CTEXTLAYOUT_SCROLLDOCPOSINTOVIEWL, "ECharacterNotFormatted" );
+		    }
 		__ASSERT_DEBUG(iText->Source()->DocumentLength() == 0,
 			Panic(ECharacterNotFormatted));
 		return ScrollL(iBandTop, EFDisallowScrollingBlankSpace);
--- a/textrendering/textformatting/test/group/TBidiCursorPos.mmp	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/test/group/TBidiCursorPos.mmp	Tue Jul 06 16:23:19 2010 +0300
@@ -19,9 +19,13 @@
 
 target tbidicursorpos.exe
 targettype exe
+
+UID 0x100039CE 0xE0008383
+VENDORID 0x70000001
+
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 userinclude ../../tagma
-userinclude ../../inc
+userinclude ../../inc ../traces
 
 sourcepath ../src
 
@@ -45,6 +49,4 @@
 
 epocstacksize	0x10000
 
-VENDORID 0x70000001
-
-SMPSAFE
\ No newline at end of file
+SMPSAFE
--- a/textrendering/textformatting/test/group/TGraphemeIterator.mmp	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/test/group/TGraphemeIterator.mmp	Tue Jul 06 16:23:19 2010 +0300
@@ -18,12 +18,16 @@
 
 target tgraphemeiterator.exe
 targettype exe
+
+UID 0x100039CE 0xE0008383
+VENDORID 0x70000001
+
 exportunfrozen
 
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 userinclude ../../tagma
 userinclude ../../inc
-userinclude ../src
+userinclude ../src ../traces
 
 sourcepath ../src
 source TGraphemeIterator.cpp
@@ -42,6 +46,4 @@
 library ws32.lib
 library euser.lib gdi.lib fntstr.lib estor.lib etext.lib linebreak.lib fbscli.lib tagma.lib
 
-VENDORID 0x70000001
-
-SMPSAFE
\ No newline at end of file
+SMPSAFE
--- a/textrendering/textformatting/test/group/TInterpreter.mmp	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/test/group/TInterpreter.mmp	Tue Jul 06 16:23:19 2010 +0300
@@ -18,12 +18,16 @@
 
 target tinterpreter.exe
 targettype exe
+
+UID 0x100039CE 0xE0008383
+VENDORID 0x70000001
+
 exportunfrozen
 
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 userinclude ../src
 userinclude ../../tagma
-userinclude ../../inc
+userinclude ../../inc ../traces
 
 sourcepath ../src
 source TInterpreter.cpp
@@ -42,6 +46,4 @@
 library ws32.lib
 library euser.lib gdi.lib fntstr.lib estor.lib etext.lib linebreak.lib fbscli.lib tagma.lib
 
-VENDORID 0x70000001
-
-SMPSAFE
\ No newline at end of file
+SMPSAFE
--- a/textrendering/textformatting/test/group/TLINEPAG.MMP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/test/group/TLINEPAG.MMP	Tue Jul 06 16:23:19 2010 +0300
@@ -25,7 +25,10 @@
 
 targettype	exe
 
-userinclude   ../../inc 	// your public include directory should be here
+UID 0x100039CE 0xE0008383
+VENDORID 0x70000001
+
+userinclude   ../../inc	../traces // your public include directory should be here
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 sourcepath	../src
@@ -36,7 +39,4 @@
 
 library  euser.lib efsrv.lib gdi.lib ws32.lib bafl.lib cone.lib
 
-
-VENDORID 0x70000001
-
-SMPSAFE
\ No newline at end of file
+SMPSAFE
--- a/textrendering/textformatting/test/group/TTagmaImp.mmp	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/test/group/TTagmaImp.mmp	Tue Jul 06 16:23:19 2010 +0300
@@ -21,12 +21,15 @@
 
 targettype	EXE
 
+UID 0x100039CE 0xE0008383
+VENDORID 0x70000001
+
 exportunfrozen
 
 MW_LAYER_SYSTEMINCLUDE_SYMBIAN
 userinclude ../../tagma
 userinclude ../../inc
-userinclude ../src
+userinclude ../src ../traces
 
 sourcepath ../src
 source TTagmaImp.cpp TGraphicsContext.cpp
@@ -43,6 +46,4 @@
 library estor.lib ws32.lib tagma.lib
 library linebreak.lib
 
-VENDORID 0x70000001
-
-SMPSAFE
\ No newline at end of file
+SMPSAFE
--- a/textrendering/textformatting/test/group/TTextView2.mmp	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/test/group/TTextView2.mmp	Tue Jul 06 16:23:19 2010 +0300
@@ -20,12 +20,15 @@
 
 targettype	exe
 
+UID 0x100039CE 0xE0008383
+VENDORID 0x70000001
+
 capability all -TCB
 
 
 MW_LAYER_SYSTEMINCLUDE_SYMBIAN
 userinclude ../../tagma
-userinclude ../../inc
+userinclude ../../inc ../traces
 
 sourcepath ../src
 source TTextView2.cpp
@@ -41,6 +44,4 @@
 library euser.lib gdi.lib form.lib etext.lib ws32.lib fbscli.lib
 library bitgdi.lib tagma.lib fntstr.lib linebreak.lib tbitmapdoc.lib
 
-VENDORID 0x70000001
-
-SMPSAFE
\ No newline at end of file
+SMPSAFE
--- a/textrendering/textformatting/test/src/TForm18030/TForm18030.mmp	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/textformatting/test/src/TForm18030/TForm18030.mmp	Tue Jul 06 16:23:19 2010 +0300
@@ -32,15 +32,15 @@
 
 START RESOURCE	TForm18030.rss
 HEADER
-TARGETPATH		\resource\apps
+TARGETPATH		/resource/apps
 end
 
 START RESOURCE	TForm18030_reg.rss
-TARGETPATH		\private\10003a3f\apps
+TARGETPATH		/private/10003a3f/apps
 END
 
 START BITMAP	tform18030.mbm
-TARGETPATH		\resource\apps
+TARGETPATH		/resource/apps
 SOURCE			c8,1 icon24.BMP icon2M.BMP icon32.BMP icon3M.BMP icon48.BMP icon4M.BMP
 END
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textrendering/textformatting/test/traces/OstTraceDefinitions.h	Tue Jul 06 16:23:19 2010 +0300
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef __OSTTRACEDEFINITIONS_H__
+#define __OSTTRACEDEFINITIONS_H__
+// OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler
+// REMOVE BEFORE CHECK-IN TO VERSION CONTROL
+// #define OST_TRACE_COMPILER_IN_USE
+#include <opensystemtrace.h>
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textrendering/textformatting/test/traces/fixed_id.definitions	Tue Jul 06 16:23:19 2010 +0300
@@ -0,0 +1,157 @@
+/*
+* Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt.
+[GROUP]TRACE_DUMP=0x89
+[GROUP]TRACE_FATAL=0x81
+[TRACE]TRACE_DUMP[0x89]_CTMLINE_APPENDCHUNKL=0x175
+[TRACE]TRACE_DUMP[0x89]_CTMLINE_WRITEINLINETEXTL=0x176
+[TRACE]TRACE_DUMP[0x89]_CTMTEXTIMP_GETPARAGRAPHFORMATL=0x169
+[TRACE]TRACE_DUMP[0x89]_CTMTEXTIMP_GETTEXT=0x168
+[TRACE]TRACE_DUMP[0x89]_CTMTEXTIMP_INSERTL=0x167
+[TRACE]TRACE_DUMP[0x89]_DUP1_CTMLINE_WRITEINLINETEXTL=0x177
+[TRACE]TRACE_DUMP[0x89]_DUP1_RRUNARRAY_FINDRUNNONSTRICT=0x16c
+[TRACE]TRACE_DUMP[0x89]_DUP1_RRUNARRAY_INSERT=0x16f
+[TRACE]TRACE_DUMP[0x89]_DUP1_RRUNARRAY_SET=0x172
+[TRACE]TRACE_DUMP[0x89]_DUP1_RTMDRAWINGINTERPRETER_GETNEXTADJUSTEDHIGHLIGHTCLIPRECT=0x163
+[TRACE]TRACE_DUMP[0x89]_DUP1_RTMGRAPHEMEEDGEITERATOR_NEXT=0x15e
+[TRACE]TRACE_DUMP[0x89]_DUP1_RTMGRAPHEMEINTEXTCHUNKITERATOR_BEGIN=0x157
+[TRACE]TRACE_DUMP[0x89]_DUP1_RTMGRAPHEMEINTEXTCHUNKITERATOR_NEXT=0x159
+[TRACE]TRACE_DUMP[0x89]_DUP1_TTMBYTECODEFINDER_FINDBYTECODE=0x165
+[TRACE]TRACE_DUMP[0x89]_DUP2_RRUNARRAY_INSERT=0x170
+[TRACE]TRACE_DUMP[0x89]_DUP2_RTMGRAPHEMEINTEXTCHUNKITERATOR_NEXT=0x15a
+[TRACE]TRACE_DUMP[0x89]_RRUNARRAY_DELETE=0x173
+[TRACE]TRACE_DUMP[0x89]_RRUNARRAY_FINDRUN=0x16a
+[TRACE]TRACE_DUMP[0x89]_RRUNARRAY_FINDRUNNONSTRICT=0x16b
+[TRACE]TRACE_DUMP[0x89]_RRUNARRAY_INSERT=0x16e
+[TRACE]TRACE_DUMP[0x89]_RRUNARRAY_RUNANDSTARTPOS=0x16d
+[TRACE]TRACE_DUMP[0x89]_RRUNARRAY_SET=0x171
+[TRACE]TRACE_DUMP[0x89]_RTMDRAWINGINTERPRETER_GETADJUSTEDHIGHLIGHTCLIPREGION=0x160
+[TRACE]TRACE_DUMP[0x89]_RTMDRAWINGINTERPRETER_GETFIRSTADJUSTEDHIGHLIGHTCLIPRECT=0x161
+[TRACE]TRACE_DUMP[0x89]_RTMDRAWINGINTERPRETER_GETNEXTADJUSTEDHIGHLIGHTCLIPRECT=0x162
+[TRACE]TRACE_DUMP[0x89]_RTMGENERALINTERPRETER_GETDISPLAYEDTEXTL=0x15f
+[TRACE]TRACE_DUMP[0x89]_RTMGRAPHEMEEDGEITERATOR_NEXT=0x15d
+[TRACE]TRACE_DUMP[0x89]_RTMGRAPHEMEINTEXTCHUNKITERATORNICE_FINDEDGE=0x15c
+[TRACE]TRACE_DUMP[0x89]_RTMGRAPHEMEINTEXTCHUNKITERATORNICE_NEXT=0x15b
+[TRACE]TRACE_DUMP[0x89]_RTMGRAPHEMEINTEXTCHUNKITERATOR_NEXT=0x158
+[TRACE]TRACE_DUMP[0x89]_RTMTEXTCACHE_GETDISPLAYEDTEXT=0x156
+[TRACE]TRACE_DUMP[0x89]_TTMBYTECODEFINDER_FINDBYTECODE=0x164
+[TRACE]TRACE_DUMP[0x89]_TTMBYTECODEFINDER_FINDBYTECODEATEND=0x166
+[TRACE]TRACE_DUMP[0x89]_TTMCHUNK_SETL=0x174
+[TRACE]TRACE_FATAL[0x81]_CTMBUFFERBASE_TRUNCATE=0x53
+[TRACE]TRACE_FATAL[0x81]_CTMTEXTLAYOUT_GETDISPLAYEDTEXTL=0x52
+[TRACE]TRACE_FATAL[0x81]_DUP1_TTMBYTECODEFINDER_FINDBYTECODEATEND=0x50
+[TRACE]TRACE_FATAL[0x81]_DUP1_TTMINTERPRETER_DOCPOSTOLINE=0x48
+[TRACE]TRACE_FATAL[0x81]_DUP1_TTMINTERPRETER_HORIZONTALEXTREMES=0x4e
+[TRACE]TRACE_FATAL[0x81]_DUP1__APPENDTEXTTOBUFFER=0x43
+[TRACE]TRACE_FATAL[0x81]_DUP2_TTMBYTECODEFINDER_FINDBYTECODEATEND=0x51
+[TRACE]TRACE_FATAL[0x81]_DUP3_TTMBYTECODEFINDER_FINDBYTECODE=0x4f
+[TRACE]TRACE_FATAL[0x81]_RTMGENERALINTERPRETER_RTMGENERALINTERPRETER=0x44
+[TRACE]TRACE_FATAL[0x81]_TTMHIGHLIGHTSOURCE_TTMHIGHLIGHTSOURCE=0x54
+[TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_DOCPOSTOLINE=0x47
+[TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_HORIZONTALEXTREMES=0x4d
+[TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_LINENUMBERTOLINE=0x49
+[TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_LINES=0x45
+[TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_PARAGRAPHS=0x46
+[TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_PARNUMBERTOLINE=0x4a
+[TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_WIDTHOFWIDESTLINE=0x4c
+[TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_YPOSTOLINE=0x4b
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTLAYOUT_DRAWBORDERS=0x153
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTLAYOUT_ENDREDRAW=0x141
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTLAYOUT_EXTENDFORMATTINGTOCOVERPOSL=0x145
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTLAYOUT_FIRSTCHARONLINE=0x142
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTLAYOUT_FORMATCHARRANGEL=0x147
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTLAYOUT_FORMATNEXTLINEL=0x14a
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTLAYOUT_PAGEDOWNL=0x151
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTLAYOUT_SCROLLDOCPOSINTOVIEWL=0x154
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTLAYOUT_SCROLLLINESL=0x14d
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTMLINE_APPENDCHUNKL=0x13c
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTMLINE_WRITEINLINETEXTL=0x13d
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTMTEXTIMP_GETPARAGRAPHFORMATL=0x130
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTMTEXTIMP_GETTEXT=0x12f
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTMTEXTIMP_INSERTL=0x12e
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTEXTLAYOUT_EXTENDFORMATTINGTOCOVERPOSL=0x146
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTEXTLAYOUT_FORMATCHARRANGEL=0x148
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTEXTLAYOUT_FORMATNEXTLINEL=0x14b
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTEXTLAYOUT_GETLINERECTL=0x143
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTEXTLAYOUT_PAGEDOWNL=0x152
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTEXTLAYOUT_SCROLLDOCPOSINTOVIEWL=0x155
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTEXTLAYOUT_SCROLLLINESL=0x14c
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTMLINE_WRITEINLINETEXTL=0x13e
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_RRUNARRAY_FINDRUNNONSTRICT=0x133
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_RRUNARRAY_INSERT=0x136
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_RRUNARRAY_SET=0x139
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_RTMDRAWINGINTERPRETER_GETNEXTADJUSTEDHIGHLIGHTCLIPRECT=0x12a
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_RTMGRAPHEMEEDGEITERATOR_NEXT=0x125
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_RTMGRAPHEMEINTEXTCHUNKITERATOR_BEGIN=0x11e
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_RTMGRAPHEMEINTEXTCHUNKITERATOR_NEXT=0x120
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_TTMBYTECODEFINDER_FINDBYTECODE=0x12c
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP2_CTEXTLAYOUT_FORMATCHARRANGEL=0x149
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP2_CTEXTLAYOUT_GETLINERECTL=0x144
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP2_CTEXTLAYOUT_SCROLLLINESL=0x14e
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP2_RRUNARRAY_INSERT=0x137
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP2_RTMGRAPHEMEINTEXTCHUNKITERATOR_NEXT=0x121
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP3_CTEXTLAYOUT_SCROLLLINESL=0x14f
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP4_CTEXTLAYOUT_SCROLLLINESL=0x150
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RRUNARRAY_DELETE=0x13a
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RRUNARRAY_FINDRUN=0x131
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RRUNARRAY_FINDRUNNONSTRICT=0x132
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RRUNARRAY_INSERT=0x135
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RRUNARRAY_RUNANDSTARTPOS=0x134
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RRUNARRAY_SET=0x138
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RSCREENDISPLAY_CREATECONTEXTL=0x140
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RTMDRAWINGINTERPRETER_GETADJUSTEDHIGHLIGHTCLIPREGION=0x127
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RTMDRAWINGINTERPRETER_GETFIRSTADJUSTEDHIGHLIGHTCLIPRECT=0x128
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RTMDRAWINGINTERPRETER_GETNEXTADJUSTEDHIGHLIGHTCLIPRECT=0x129
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RTMGENERALINTERPRETER_GETDISPLAYEDTEXTL=0x126
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RTMGRAPHEMEEDGEITERATOR_NEXT=0x124
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RTMGRAPHEMEINTEXTCHUNKITERATORNICE_FINDEDGE=0x123
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RTMGRAPHEMEINTEXTCHUNKITERATORNICE_NEXT=0x122
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RTMGRAPHEMEINTEXTCHUNKITERATOR_NEXT=0x11f
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RTMTEXTCACHE_GETDISPLAYEDTEXT=0x11d
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_TLINEPAGINATOR_INSERTPAGEBREAKL=0x13f
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_TTMBYTECODEFINDER_FINDBYTECODE=0x12b
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_TTMBYTECODEFINDER_FINDBYTECODEATEND=0x12d
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_TTMCHUNK_SETL=0x13b
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTEXTLAYOUT_ADJUSTVERTICALALIGNMENT=0x42
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTEXTLAYOUT_GETLINERECTL=0x3c
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTEXTLAYOUT_HANDLEBLOCKCHANGEL=0x41
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTEXTLAYOUT_HANDLECHAREDITL=0x3e
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTEXTLAYOUT_RESETEXTERNALDRAW=0x3a
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTEXTLAYOUT_SETFORMATMODE=0x3b
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTMBUFFERBASE_TRUNCATE=0x37
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTMTEXTLAYOUT_GETDISPLAYEDTEXTL=0x36
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CTEXTLAYOUT_HANDLECHAREDITL=0x3f
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CTEXTLAYOUT_SETEXTERNALDRAW=0x39
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_TTMBYTECODEFINDER_FINDBYTECODEATEND=0x34
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_TTMINTERPRETER_DOCPOSTOLINE=0x2c
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_TTMINTERPRETER_HORIZONTALEXTREMES=0x32
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1__APPENDTEXTTOBUFFER=0x27
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CTEXTLAYOUT_HANDLECHAREDITL=0x3d
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_TTMBYTECODEFINDER_FINDBYTECODEATEND=0x35
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP3_CTEXTLAYOUT_HANDLECHAREDITL=0x40
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP3_TTMBYTECODEFINDER_FINDBYTECODE=0x33
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_RTMGENERALINTERPRETER_RTMGENERALINTERPRETER=0x28
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_TTMHIGHLIGHTSOURCE_TTMHIGHLIGHTSOURCE=0x38
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_DOCPOSTOLINE=0x2b
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_HORIZONTALEXTREMES=0x31
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_LINENUMBERTOLINE=0x2d
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_LINES=0x29
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_PARAGRAPHS=0x2a
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_PARNUMBERTOLINE=0x2e
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_WIDTHOFWIDESTLINE=0x30
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_YPOSTOLINE=0x2f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textrendering/textformatting/traces/OstTraceDefinitions.h	Tue Jul 06 16:23:19 2010 +0300
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef __OSTTRACEDEFINITIONS_H__
+#define __OSTTRACEDEFINITIONS_H__
+// OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler
+// REMOVE BEFORE CHECK-IN TO VERSION CONTROL
+// #define OST_TRACE_COMPILER_IN_USE
+#include <opensystemtrace.h>
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textrendering/textformatting/traces/fixed_id.definitions	Tue Jul 06 16:23:19 2010 +0300
@@ -0,0 +1,223 @@
+/*
+* Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt.
+[GROUP]TRACE_DUMP=0x89
+[GROUP]TRACE_FATAL=0x81
+[TRACE]TRACE_DUMP[0x89]_CTMLINE_APPENDCHUNKL=0xf1
+[TRACE]TRACE_DUMP[0x89]_CTMLINE_WRITEINLINETEXTL=0xf2
+[TRACE]TRACE_DUMP[0x89]_CTMTEXTIMP_GETPARAGRAPHFORMATL=0xe5
+[TRACE]TRACE_DUMP[0x89]_CTMTEXTIMP_GETTEXT=0xe4
+[TRACE]TRACE_DUMP[0x89]_CTMTEXTIMP_INSERTL=0xe3
+[TRACE]TRACE_DUMP[0x89]_DUP1_CTMLINE_WRITEINLINETEXTL=0xf3
+[TRACE]TRACE_DUMP[0x89]_DUP1_RRUNARRAY_FINDRUNNONSTRICT=0xe8
+[TRACE]TRACE_DUMP[0x89]_DUP1_RRUNARRAY_INSERT=0xeb
+[TRACE]TRACE_DUMP[0x89]_DUP1_RRUNARRAY_SET=0xee
+[TRACE]TRACE_DUMP[0x89]_DUP1_RTMDRAWINGINTERPRETER_GETNEXTADJUSTEDHIGHLIGHTCLIPRECT=0xdf
+[TRACE]TRACE_DUMP[0x89]_DUP1_RTMGRAPHEMEEDGEITERATOR_NEXT=0xda
+[TRACE]TRACE_DUMP[0x89]_DUP1_RTMGRAPHEMEINTEXTCHUNKITERATOR_BEGIN=0xd3
+[TRACE]TRACE_DUMP[0x89]_DUP1_RTMGRAPHEMEINTEXTCHUNKITERATOR_NEXT=0xd5
+[TRACE]TRACE_DUMP[0x89]_DUP1_TTMBYTECODEFINDER_FINDBYTECODE=0xe1
+[TRACE]TRACE_DUMP[0x89]_DUP2_RRUNARRAY_INSERT=0xec
+[TRACE]TRACE_DUMP[0x89]_DUP2_RTMGRAPHEMEINTEXTCHUNKITERATOR_NEXT=0xd6
+[TRACE]TRACE_DUMP[0x89]_RRUNARRAY_DELETE=0xef
+[TRACE]TRACE_DUMP[0x89]_RRUNARRAY_FINDRUN=0xe6
+[TRACE]TRACE_DUMP[0x89]_RRUNARRAY_FINDRUNNONSTRICT=0xe7
+[TRACE]TRACE_DUMP[0x89]_RRUNARRAY_INSERT=0xea
+[TRACE]TRACE_DUMP[0x89]_RRUNARRAY_RUNANDSTARTPOS=0xe9
+[TRACE]TRACE_DUMP[0x89]_RRUNARRAY_SET=0xed
+[TRACE]TRACE_DUMP[0x89]_RTMDRAWINGINTERPRETER_GETADJUSTEDHIGHLIGHTCLIPREGION=0xdc
+[TRACE]TRACE_DUMP[0x89]_RTMDRAWINGINTERPRETER_GETFIRSTADJUSTEDHIGHLIGHTCLIPRECT=0xdd
+[TRACE]TRACE_DUMP[0x89]_RTMDRAWINGINTERPRETER_GETNEXTADJUSTEDHIGHLIGHTCLIPRECT=0xde
+[TRACE]TRACE_DUMP[0x89]_RTMGENERALINTERPRETER_GETDISPLAYEDTEXTL=0xdb
+[TRACE]TRACE_DUMP[0x89]_RTMGRAPHEMEEDGEITERATOR_NEXT=0xd9
+[TRACE]TRACE_DUMP[0x89]_RTMGRAPHEMEINTEXTCHUNKITERATORNICE_FINDEDGE=0xd8
+[TRACE]TRACE_DUMP[0x89]_RTMGRAPHEMEINTEXTCHUNKITERATORNICE_NEXT=0xd7
+[TRACE]TRACE_DUMP[0x89]_RTMGRAPHEMEINTEXTCHUNKITERATOR_NEXT=0xd4
+[TRACE]TRACE_DUMP[0x89]_RTMTEXTCACHE_GETDISPLAYEDTEXT=0xd2
+[TRACE]TRACE_DUMP[0x89]_TTMBYTECODEFINDER_FINDBYTECODE=0xe0
+[TRACE]TRACE_DUMP[0x89]_TTMBYTECODEFINDER_FINDBYTECODEATEND=0xe2
+[TRACE]TRACE_DUMP[0x89]_TTMCHUNK_SETL=0xf0
+[TRACE]TRACE_FATAL[0x81]_CTMBUFFERBASE_TRUNCATE=0x61
+[TRACE]TRACE_FATAL[0x81]_CTMTEXTLAYOUT_GETDISPLAYEDTEXTL=0x60
+[TRACE]TRACE_FATAL[0x81]_DUP1_TTMBYTECODEFINDER_FINDBYTECODEATEND=0x5e
+[TRACE]TRACE_FATAL[0x81]_DUP1_TTMINTERPRETER_DOCPOSTOLINE=0x56
+[TRACE]TRACE_FATAL[0x81]_DUP1_TTMINTERPRETER_HORIZONTALEXTREMES=0x5c
+[TRACE]TRACE_FATAL[0x81]_DUP1__APPENDTEXTTOBUFFER=0x51
+[TRACE]TRACE_FATAL[0x81]_DUP2_TTMBYTECODEFINDER_FINDBYTECODEATEND=0x5f
+[TRACE]TRACE_FATAL[0x81]_DUP3_TTMBYTECODEFINDER_FINDBYTECODE=0x5d
+[TRACE]TRACE_FATAL[0x81]_RTMGENERALINTERPRETER_RTMGENERALINTERPRETER=0x52
+[TRACE]TRACE_FATAL[0x81]_TTMHIGHLIGHTSOURCE_TTMHIGHLIGHTSOURCE=0x62
+[TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_DOCPOSTOLINE=0x55
+[TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_HORIZONTALEXTREMES=0x5b
+[TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_LINENUMBERTOLINE=0x57
+[TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_LINES=0x53
+[TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_PARAGRAPHS=0x54
+[TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_PARNUMBERTOLINE=0x58
+[TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_WIDTHOFWIDESTLINE=0x5a
+[TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_YPOSTOLINE=0x59
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTLAYOUT_DRAWBORDERS=0xcf
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTLAYOUT_ENDREDRAW=0xbd
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTLAYOUT_EXTENDFORMATTINGTOCOVERPOSL=0xc1
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTLAYOUT_FIRSTCHARONLINE=0xbe
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTLAYOUT_FORMATCHARRANGEL=0xc3
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTLAYOUT_FORMATNEXTLINEL=0xc6
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTLAYOUT_PAGEDOWNL=0xcd
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTLAYOUT_SCROLLDOCPOSINTOVIEWL=0xd0
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTLAYOUT_SCROLLLINESL=0xc9
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTPAGEREGIONPRINTER_PRINTBANDL=0x9c
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTPAGINATOR_COPYTEMPPAGELISTL=0x9b
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_CTEXTVIEW=0x9f
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_DISPLAYNEWLINESL=0xa6
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_DOCPOSTOXYPOSL=0x34
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_DODRAWTEXTSUPPORTL=0xbb
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_DRAWL=0x3b
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_DRAWPICTUREFRAMEL=0xb4
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_GETBACKWARDDELETEPOSITIONL=0xa4
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_GETFORWARDDELETEPOSITIONL=0xa1
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_HANDLEADDITIONALCHARACTERSATENDL=0xb1
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_HANDLEBLOCKCHANGEL=0x40
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_HANDLECHAREDITL=0xa7
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_HIGHLIGHTUSINGEXTENSIONS=0xb2
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_ISPICTUREFRAMESELECTED=0xa0
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_MOVECURSORL=0x48
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_NOMEMORYCHECKL=0xb6
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_NOMEMORYL=0xb5
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_RECOVERNOMEMORYL=0xb7
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_SCROLLDISPLAYL=0x46
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_SCROLLRECT=0xaf
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_SCROLLTEXTL=0xad
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_SETCURSORVISIBILITYL=0x4c
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_SETDOCPOSL=0x44
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_SETHORIZONTALSCROLLJUMP=0xb9
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_SETSELECTIONL=0x31
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_SETSELECTIONVISIBILITYL=0x4d
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_SETVIEWL=0xb0
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_SETXYPOSL=0x45
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTEXTVIEW_XYPOSTODOCPOSL=0x33
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTMLINE_APPENDCHUNKL=0x8f
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTMLINE_WRITEINLINETEXTL=0x90
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTMTEXTIMP_GETPARAGRAPHFORMATL=0x83
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTMTEXTIMP_GETTEXT=0x82
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CTMTEXTIMP_INSERTL=0x81
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTEXTLAYOUT_EXTENDFORMATTINGTOCOVERPOSL=0xc2
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTEXTLAYOUT_FORMATCHARRANGEL=0xc4
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTEXTLAYOUT_FORMATNEXTLINEL=0xc7
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTEXTLAYOUT_GETLINERECTL=0xbf
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTEXTLAYOUT_PAGEDOWNL=0xce
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTEXTLAYOUT_SCROLLDOCPOSINTOVIEWL=0xd1
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTEXTLAYOUT_SCROLLLINESL=0xc8
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTEXTVIEW_GETBACKWARDDELETEPOSITIONL=0xa5
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTEXTVIEW_GETFORWARDDELETEPOSITIONL=0xa2
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTEXTVIEW_HANDLEBLOCKCHANGEL=0xab
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTEXTVIEW_HANDLECHAREDITL=0xa8
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTEXTVIEW_HIGHLIGHTUSINGEXTENSIONS=0xb3
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTEXTVIEW_RECOVERNOMEMORYL=0xb8
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTEXTVIEW_SCROLLDISPLAYL=0x47
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTEXTVIEW_SCROLLTEXTL=0xae
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTEXTVIEW_SETHORIZONTALSCROLLJUMP=0xba
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CTMLINE_WRITEINLINETEXTL=0x91
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_RRUNARRAY_FINDRUNNONSTRICT=0x86
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_RRUNARRAY_INSERT=0x89
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_RRUNARRAY_SET=0x8c
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_RTMDRAWINGINTERPRETER_GETNEXTADJUSTEDHIGHLIGHTCLIPRECT=0x7d
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_RTMGRAPHEMEEDGEITERATOR_NEXT=0x78
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_RTMGRAPHEMEINTEXTCHUNKITERATOR_BEGIN=0x71
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_RTMGRAPHEMEINTEXTCHUNKITERATOR_NEXT=0x73
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_TCURSORPOSITION_CHECKCURSORONSCREENL=0x99
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_TTMBYTECODEFINDER_FINDBYTECODE=0x7f
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP2_CTEXTLAYOUT_FORMATCHARRANGEL=0xc5
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP2_CTEXTLAYOUT_GETLINERECTL=0xc0
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP2_CTEXTLAYOUT_SCROLLLINESL=0xca
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP2_CTEXTPAGEREGIONPRINTER_PRINTBANDL=0x9d
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP2_CTEXTVIEW_GETFORWARDDELETEPOSITIONL=0xa3
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP2_CTEXTVIEW_HANDLEBLOCKCHANGEL=0xac
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP2_CTEXTVIEW_HANDLECHAREDITL=0xa9
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP2_RRUNARRAY_INSERT=0x8a
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP2_RTMGRAPHEMEINTEXTCHUNKITERATOR_NEXT=0x74
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP2_TCURSORPOSITION_CHECKCURSORONSCREENL=0x9a
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP3_CTEXTLAYOUT_SCROLLLINESL=0xcb
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP3_CTEXTVIEW_HANDLEBLOCKCHANGEL=0x43
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP3_CTEXTVIEW_HANDLECHAREDITL=0xaa
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP4_CTEXTLAYOUT_SCROLLLINESL=0xcc
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RRUNARRAY_DELETE=0x8d
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RRUNARRAY_FINDRUN=0x84
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RRUNARRAY_FINDRUNNONSTRICT=0x85
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RRUNARRAY_INSERT=0x88
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RRUNARRAY_RUNANDSTARTPOS=0x87
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RRUNARRAY_SET=0x8b
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RSCREENDISPLAY_CREATECONTEXTL=0x9e
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RTMDRAWINGINTERPRETER_GETADJUSTEDHIGHLIGHTCLIPREGION=0x7a
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RTMDRAWINGINTERPRETER_GETFIRSTADJUSTEDHIGHLIGHTCLIPRECT=0x7b
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RTMDRAWINGINTERPRETER_GETNEXTADJUSTEDHIGHLIGHTCLIPRECT=0x7c
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RTMGENERALINTERPRETER_GETDISPLAYEDTEXTL=0x79
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RTMGRAPHEMEEDGEITERATOR_NEXT=0x77
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RTMGRAPHEMEINTEXTCHUNKITERATORNICE_FINDEDGE=0x76
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RTMGRAPHEMEINTEXTCHUNKITERATORNICE_NEXT=0x75
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RTMGRAPHEMEINTEXTCHUNKITERATOR_NEXT=0x72
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RTMTEXTCACHE_GETDISPLAYEDTEXT=0x70
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_TCURSORPOSITION_CHECKCURSORONSCREENL=0x98
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_TCURSORPOSITION_CHECKSELECTION=0x92
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_TCURSORPOSITION_LEFTRIGHTL=0x94
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_TCURSORPOSITION_PAGESCROLLL=0x97
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_TCURSORPOSITION_SETSELECTIONL=0x93
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_TCURSORPOSITION_STARTEND=0x95
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_TCURSORPOSITION_UPDOWNL=0x96
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_TLINEPAGINATOR_INSERTPAGEBREAKL=0xbc
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_TTMBYTECODEFINDER_FINDBYTECODE=0x7e
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_TTMBYTECODEFINDER_FINDBYTECODEATEND=0x80
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_TTMCHUNK_SETL=0x8e
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTEXTLAYOUT_ADJUSTVERTICALALIGNMENT=0x50
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTEXTLAYOUT_GETLINERECTL=0x4a
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTEXTLAYOUT_HANDLEBLOCKCHANGEL=0x4f
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTEXTLAYOUT_HANDLECHAREDITL=0x4c
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTEXTLAYOUT_RESETEXTERNALDRAW=0x48
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTEXTLAYOUT_SETFORMATMODE=0x49
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTEXTPAGEREGIONPRINTER_LEAVEL=0x42
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTEXTPAGINATOR_APPENDTEXTL=0x3e
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTEXTPAGINATOR_LEAVEL=0x40
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTEXTPAGINATOR_PAGINATECOMPLETEDOCUMENTL=0x3d
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTEXTPAGINATOR_SETPRINTERDEVICE=0x3c
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTEXTVIEW_CONSTRUCTL=0x44
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTEXTVIEW_MATCHCURSORHEIGHTL=0x46
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTEXTVIEW_SETLAYOUT=0x45
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTMBUFFERBASE_TRUNCATE=0x39
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CTMTEXTLAYOUT_GETDISPLAYEDTEXTL=0x38
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CTEXTLAYOUT_HANDLECHAREDITL=0x4d
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CTEXTLAYOUT_SETEXTERNALDRAW=0x47
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CTEXTPAGEREGIONPRINTER_PRINTBANDL=0x41
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CTEXTPAGINATOR_APPENDTEXTL=0x3f
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_TCURSOR_DRAWLINECURSOR=0x43
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_TTMBYTECODEFINDER_FINDBYTECODEATEND=0x36
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_TTMINTERPRETER_DOCPOSTOLINE=0x2e
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_TTMINTERPRETER_HORIZONTALEXTREMES=0x34
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1__APPENDTEXTTOBUFFER=0x29
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CTEXTLAYOUT_HANDLECHAREDITL=0x4b
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_TTMBYTECODEFINDER_FINDBYTECODEATEND=0x37
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP3_CTEXTLAYOUT_HANDLECHAREDITL=0x4e
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP3_TTMBYTECODEFINDER_FINDBYTECODE=0x35
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_RTMGENERALINTERPRETER_RTMGENERALINTERPRETER=0x2a
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_TCURSORPOSITION_SETXYPOSL=0x3b
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_TTMHIGHLIGHTSOURCE_TTMHIGHLIGHTSOURCE=0x3a
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_DOCPOSTOLINE=0x2d
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_HORIZONTALEXTREMES=0x33
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_LINENUMBERTOLINE=0x2f
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_LINES=0x2b
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_PARAGRAPHS=0x2c
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_PARNUMBERTOLINE=0x30
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_WIDTHOFWIDESTLINE=0x32
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_TTMINTERPRETER_YPOSTOLINE=0x31
--- a/textrendering/texthandling/group/ETEXT.MMP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/texthandling/group/ETEXT.MMP	Tue Jul 06 16:23:19 2010 +0300
@@ -27,12 +27,11 @@
 UID 0x1000008D 0x10003A1C
 VENDORID 0x70000001
 
-SOURCEPATH	.
 
 SOURCEPATH ../stext
 userinclude ../stext
 userinclude ../inc
-USERINCLUDE ../../texthandling/inc
+USERINCLUDE ../../texthandling/inc ../traces
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 source TXTETEXT.CPP
--- a/textrendering/texthandling/stext/ParseLst.cpp	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/texthandling/stext/ParseLst.cpp	Tue Jul 06 16:23:19 2010 +0300
@@ -18,6 +18,13 @@
 
 #include "TXTSTD.H"
 #include "ParseLst.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "ParseLstTraces.h"
+#endif
+
+
+
 //++ sort out definitive hash includes
 
 
@@ -31,6 +38,7 @@
 // Panic the process with UikParse as the category.
 void CParserList::Panic(TParserListPanic aPanic) const
 	{
+	OstTraceExt2( TRACE_FATAL, DUP1_CPARSERLIST_PANIC, "CParserList::Panic;this=%x;aPanic=%x", (unsigned int)this, ( TUint )&( aPanic ) );
 	_LIT(panicStr, "ParseLst");
 	User::Panic(panicStr, aPanic);
 	}
@@ -59,7 +67,15 @@
 	// uint (I'm using the top 3 bits as flags) this allows 268435456 parsers
 	// to be installed. (Assuming we deinstall almost as many, as we went
 	// along, to avoid OOM.) At 50 per sec that's 20 years continuous action!
+	if (iHighestIndex >= EMaxParserIndex)
+	    {
+	    OstTrace0( TRACE_DUMP, CPARSERLIST_ACTIVATEAPARSERL, "EParserIndexRollover" );
+	    }
 	__ASSERT_DEBUG((iHighestIndex < EMaxParserIndex), Panic(EParserIndexRollover));
+	if (!aParser)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CPARSERLIST_ACTIVATEAPARSERL, "EParserNullPtr" );
+	    }
 	__ASSERT_DEBUG(aParser, Panic(EParserNullPtr));
 	TUint parserIndex = iHighestIndex + 1;
 	// Adjust flags to describe parser
@@ -112,7 +128,15 @@
 // an EText left with a local ptr to it.
 void CParserList::DeactivateParser(MParser* aParser)
 	{
+	if (!iNumberInList)
+	    {
+	    OstTrace0( TRACE_DUMP, CPARSERLIST_DEACTIVATEPARSER, "EParserNoneActive" );
+	    }
 	__ASSERT_DEBUG(iNumberInList, Panic(EParserNoneActive));
+	if (!aParser)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CPARSERLIST_DEACTIVATEPARSER, "EParserNullPtr" );
+	    }
 	__ASSERT_DEBUG(aParser, Panic(EParserNullPtr));
 	// Run thru list till find entry we need
 	TInt count;
@@ -125,6 +149,10 @@
 			break;
 			}
 		}
+	if (count >= iNumberInList)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP2_CPARSERLIST_DEACTIVATEPARSER, "EParserInstanceNotActive" );
+	     }
 	__ASSERT_DEBUG((count < iNumberInList), Panic(EParserInstanceNotActive));
 	iNumberInList--;
 	}
@@ -274,6 +302,10 @@
 				TInt result = parser->ParseThisText(aTextObj, allowBack, localStartScan, localScanLength, localStartTag, localTagLength);
 				if (!result)
 					break;
+				if (!allowBack && (localStartTag < localStartScan))
+				    {
+				    OstTrace0( TRACE_DUMP, CPARSERLIST_PARSETHISTEXT, "EParserIgnoringAllowFlag" );
+				    }
 				__ASSERT_DEBUG(allowBack || (localStartTag >= localStartScan), Panic(EParserIgnoringAllowFlag));
 				TInt startNewTag = localStartTag;
 				TInt lengthNewTag = localTagLength;
@@ -424,6 +456,10 @@
 			break;
 			}
 		}
+	if (!tagIndex)
+	    {
+	    OstTrace0( TRACE_DUMP, CPARSERLIST_TAGFORTHISPARSER, "EParserNoSuchTag" );
+	    }
 	__ASSERT_DEBUG(tagIndex, Panic(EParserNoSuchTag));
 	return tagIndex;
 	}
--- a/textrendering/texthandling/stext/TXTETEXT.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/texthandling/stext/TXTETEXT.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -41,6 +41,11 @@
 #include "TXTRTPFL.H"
 #include "TXTCLIPBOARD.H"
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "TXTETEXTTraces.h"
+#endif
+
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
 #include "TXTETEXT_INTERNAL.H"
 #endif
@@ -258,7 +263,15 @@
 EXPORT_C void CEditableText::StartFepInlineEditL(TBool& aParagraphContainingStartPositionOfInlineTextHasChangedFormat,TInt& aNumberOfCharactersSuccessfullyDeleted,TInt& aNumberOfCharactersSuccessfullyInserted,TInt& aPositionOfInsertionPointInDocument,TInt aNewPositionOfInsertionPointInDocument,const TDesC& aInitialInlineText,TInt aPositionOfInlineTextInDocument,TInt aNumberOfCharactersToHide,MFepInlineTextFormatRetriever& aInlineTextFormatRetriever)
 /** @internalAll */	
 	{
+	if (aPositionOfInlineTextInDocument<0 || aNumberOfCharactersToHide<0 || aPositionOfInlineTextInDocument+aNumberOfCharactersToHide>DocumentLength())
+	    {
+	    OstTrace0( TRACE_DUMP, CEDITABLETEXT_STARTFEPINLINEEDITL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPositionOfInlineTextInDocument>=0 && aNumberOfCharactersToHide>=0 && aPositionOfInlineTextInDocument+aNumberOfCharactersToHide<=DocumentLength(),Panic(ECharPosBeyondDocument));
+	if (InlineEditData()!=NULL)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CEDITABLETEXT_STARTFEPINLINEEDITL, "EAlreadyFepInlineEditing" );
+	    }
 	__ASSERT_ALWAYS(InlineEditData()==NULL,Panic(EAlreadyFepInlineEditing));
 	aParagraphContainingStartPositionOfInlineTextHasChangedFormat=EFalse;
 	aNumberOfCharactersSuccessfullyDeleted=0;
@@ -295,12 +308,20 @@
 /** @internalAll */	
     {
 	CInlineEditData* const inlineEditData=InlineEditData();
+	if (inlineEditData==NULL)
+	    {
+	    OstTrace0( TRACE_DUMP, CEDITABLETEXT_UPDATEFEPINLINETEXTL, "ENotCurrentlyFepInlineEditing" );
+	    }
 	__ASSERT_ALWAYS(inlineEditData!=NULL,Panic(ENotCurrentlyFepInlineEditing));
 	aParagraphContainingStartPositionOfInlineTextHasChangedFormat=EFalse;
 	aNumberOfCharactersSuccessfullyDeleted=0;
 	aNumberOfCharactersSuccessfullyInserted=0;
 	HBufC*& inlineText=inlineEditData->iInlineText;
 	HBufC* oldInlineText=inlineText;
+	if (oldInlineText!=NULL && inlineEditData->iLengthOfInlineText!=oldInlineText->Length())
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CEDITABLETEXT_UPDATEFEPINLINETEXTL, "EDebug" );
+	    }
 	__ASSERT_DEBUG(oldInlineText==NULL || inlineEditData->iLengthOfInlineText==oldInlineText->Length(),Panic(EDebug));
 	const TInt lengthOfNewInlineText=aNewInlineText.Length();
 	if (oldInlineText!=NULL && *oldInlineText==aNewInlineText)
@@ -346,7 +367,15 @@
  */	
     {
 	const CInlineEditData* const inlineEditData=InlineEditData();
+	if (inlineEditData==NULL)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CEDITABLETEXT_COMMITFEPINLINEEDITL, "ENotCurrentlyFepInlineEditing" );
+	    }
 	__ASSERT_ALWAYS(inlineEditData!=NULL,Panic(ENotCurrentlyFepInlineEditing));
+	if (inlineEditData->iInlineText!=NULL && inlineEditData->iLengthOfInlineText!=inlineEditData->iInlineText->Length())
+	    {
+	    OstTrace0( TRACE_DUMP, CEDITABLETEXT_COMMITFEPINLINEEDITL, "EDebug" );
+	    }
 	__ASSERT_DEBUG(inlineEditData->iInlineText==NULL || inlineEditData->iLengthOfInlineText==inlineEditData->iInlineText->Length(),Panic(EDebug));
 	aParagraphContainingStartPositionOfInlineTextHasChangedFormat=EFalse;
 	const TInt lengthOfInlineText=inlineEditData->iLengthOfInlineText;
@@ -370,6 +399,10 @@
 		{
 		const TInt positionOfInlineTextInDocument=inlineEditData->iPositionOfInlineTextInDocument;
 		const TInt lengthOfInlineText=inlineEditData->iLengthOfInlineText;
+		if (inlineEditData->iInlineText!=NULL && lengthOfInlineText!=inlineEditData->iInlineText->Length())
+		    {
+		    OstTrace0( TRACE_DUMP, CEDITABLETEXT_CANCELFEPINLINEEDIT, "EDebug" );
+		    }
 		__ASSERT_DEBUG(inlineEditData->iInlineText==NULL || lengthOfInlineText==inlineEditData->iInlineText->Length(),Panic(EDebug));
 		TRAPD(notUsed,
 						if (lengthOfInlineText>0)
@@ -381,6 +414,10 @@
 						const HBufC* const hiddenText=inlineEditData->iHiddenText;
 						if (hiddenText!=NULL)
 							{
+							if (hiddenText->Length()<=0)
+							    {
+							    OstTrace0( TRACE_DUMP, DUP1_CEDITABLETEXT_CANCELFEPINLINEEDIT, "EDebug" );
+							    }
 							__ASSERT_DEBUG(hiddenText->Length()>0, Panic(EDebug));
 							InsertL(positionOfInlineTextInDocument,*hiddenText);
 							aNumberOfCharactersSuccessfullyInserted=hiddenText->Length();
@@ -562,6 +599,10 @@
 /** Allocates storage of CBufFlat or CBufSeg, according to the parameter aStorage.
 Creates & initializes the field set.*/
 	{
+	if (iByteStore!=NULL)
+	    {
+	    OstTrace0( TRACE_DUMP, CPLAINTEXT_DOCONSTRUCTL, "EConstructCalledTwice" );
+	    }
 	__ASSERT_DEBUG(iByteStore==NULL,Panic(EConstructCalledTwice));
 	
 	iByteStore=(aStorage==ESegmentedStorage)
@@ -884,8 +925,20 @@
 	{
 	__TEST_INVARIANT;
 	TInt documentLength = DocumentLength();
+	if (aPos < 0 || aPos > documentLength)
+	    {
+	    OstTrace0( TRACE_FATAL, CPLAINTEXT_DOCOPYTOSTOREL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= documentLength,Panic(ECharPosBeyondDocument));
+	if (aLength < 0)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CPLAINTEXT_DOCOPYTOSTOREL, "ECopyToStreamNegativeLength" );
+	    }
 	__ASSERT_ALWAYS(aLength >= 0,Panic(ECopyToStreamNegativeLength));
+	if (aPos + aLength > documentLength)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP2_CPLAINTEXT_DOCOPYTOSTOREL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos + aLength <= documentLength,Panic(ECharPosBeyondDocument));
 
 	if (aLength == 0)
@@ -924,8 +977,20 @@
 	{
 	__TEST_INVARIANT;
 	TInt documentLength = DocumentLength();
+	if (aPos < 0 || aPos > documentLength)
+	    {
+	    OstTrace0( TRACE_FATAL, CPLAINTEXT_COPYTOSTREAML, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= documentLength,Panic(ECharPosBeyondDocument));
+	if (aLength < 0)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CPLAINTEXT_COPYTOSTREAML, "ECopyToStreamNegativeLength" );
+	    }
 	__ASSERT_ALWAYS(aLength >= 0,Panic(ECopyToStreamNegativeLength));
+	if (aPos + aLength > documentLength)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP2_CPLAINTEXT_COPYTOSTREAML, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos + aLength <= documentLength,Panic(ECharPosBeyondDocument));
 
 	aStream.WriteInt32L(aLength);
@@ -961,6 +1026,10 @@
 
 TInt CPlainText::DoPasteFromStoreL(const CStreamStore& aStore,TStreamId aStreamId,TInt aPos)
 	{
+	if (aPos>DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CPLAINTEXT_DOPASTEFROMSTOREL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
 
 	TInt charsPasted=0;
@@ -1007,6 +1076,7 @@
 	if (error != KErrNone)
 		{
 		DoPtDelete(aPos,chars_read);
+		OstTrace1( TRACE_FATAL, DUP1_CPLAINTEXT_PASTEFROMSTREAML, "Leave code=%d", error );
 		User::Leave(error);
 		}
 
@@ -1058,6 +1128,10 @@
 /** Inserts the end-of-document character upon document construction.*/
 	{
 // ASSERT: The plain text component is empty.
+	if (DocumentLength()!=-1)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CPLAINTEXT_INSERTEODL, "ECorruptTextStore" );
+	    }
 	__ASSERT_DEBUG(DocumentLength()==-1,Panic(ECorruptTextStore));
 	TBuf<1> content;
 	content.Append(EParagraphDelimiter);
@@ -1113,6 +1187,10 @@
 @param aBuf The descriptor to insert. */
 	{
 	__TEST_INVARIANT;
+	if (aInsertPos<0 || aInsertPos>DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CPLAINTEXT_INSERTL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aInsertPos>=0 && aInsertPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
 
 	TInt contentLength = 1;
@@ -1156,6 +1234,10 @@
 Maintain field set.*/
 	{
 	__TEST_INVARIANT;
+	if (aPos<0 || aPos>DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CPLAINTEXT_PTINSERTL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos>=0 && aPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
 
 	DoPtInsertL(aPos,aBuf);
@@ -1241,8 +1323,20 @@
  EFalse, so no reformatting occurs.*/
 	{
 	TInt documentLength=DocumentLength()+1;
+	if (aPos<0 || aPos>documentLength)
+	    {
+	    OstTrace0( TRACE_FATAL, CPLAINTEXT_DOPTDELETE, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos>=0 && aPos<=documentLength,Panic(ECharPosBeyondDocument));
+	if (aLength<0)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CPLAINTEXT_DOPTDELETE, "EDeleteNegativeLength" );
+	    }
 	__ASSERT_ALWAYS(aLength>=0,Panic(EDeleteNegativeLength));
+	if (aPos+aLength>documentLength)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP2_CPLAINTEXT_DOPTDELETE, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos+aLength<=documentLength,Panic(ECharPosBeyondDocument));
 
 	iByteStore->Delete(aPos*sizeof(TText),aLength*sizeof(TText));
@@ -1290,6 +1384,10 @@
 		file.Close();
 		file_session.Close();
 		}
+	if (error < 0)
+	    {
+	    OstTrace1( TRACE_FATAL, DUP1_CPLAINTEXT_IMPORTTEXTFILEL, "Leave code=%x", error );
+	    }
 	User::LeaveIfError(error);
 	return chars_inserted;
 	}
@@ -1314,6 +1412,10 @@
 @param aMaxLineLength The maximum number of characters in each line, (only 
 relevant if the text organisation is EOrganiseByLine). */
 	{
+	if (aTextOrganisation != EOrganiseByParagraph && aLineWrap <= 0)
+	    {
+	    OstTrace0( TRACE_DUMP, CPLAINTEXT_EXPORTASTEXTL, "EExportLineWrapInvalid" );
+	    }
 	__ASSERT_DEBUG(aTextOrganisation == EOrganiseByParagraph || aLineWrap > 0,Panic(EExportLineWrapInvalid));
 	RFs file_session;
 	TInt error = file_session.Connect();
@@ -1332,6 +1434,10 @@
 		file.Close();
 		file_session.Close();
 		}
+	if (error < 0)
+	    {
+	    OstTrace1( TRACE_FATAL, DUP2_CPLAINTEXT_EXPORTASTEXTL, "Leave code=%x", error );
+	    }
 	User::LeaveIfError(error);
 	}
 
@@ -1485,6 +1591,10 @@
 */	
     {
 	__TEST_INVARIANT;
+	if (aStartPos<0 || aStartPos>DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CPLAINTEXT_READ, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aStartPos>=0 && aStartPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
 	
 	TPtr8 buf=iByteStore->Ptr(aStartPos*sizeof(TText));
@@ -1511,6 +1621,10 @@
 */
 	{
 	__TEST_INVARIANT;
+	if (aStartPos<0 || aStartPos>DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CPLAINTEXT_READ, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aStartPos>=0 && aStartPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
 	
 	TPtr8 buf=iByteStore->Ptr(aStartPos*sizeof(TText));
@@ -1534,7 +1648,15 @@
     {
 	__TEST_INVARIANT;
 	TInt documentLength=DocumentLength();
+	if (aPos<0 || aPos>documentLength)
+	    {
+	    OstTrace0( TRACE_FATAL, CPLAINTEXT_EXTRACT, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos>=0 && aPos<=documentLength,Panic(ECharPosBeyondDocument));
+	if (aBuf.MaxLength()<documentLength - aPos)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CPLAINTEXT_EXTRACT, "EExtractBufferTooSmall" );
+	    }
 	__ASSERT_ALWAYS(aBuf.MaxLength()>=documentLength - aPos,Panic(EExtractBufferTooSmall));
 
 	DoExtract(aBuf,aPos,documentLength-aPos);
@@ -1556,7 +1678,15 @@
 @param aLength The number of characters to copy. */
 	{
 	__TEST_INVARIANT;
+	if (aPos<0 || aPos>DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, DUP2_CPLAINTEXT_EXTRACT, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos>=0 && aPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
+	if (aBuf.MaxLength()<aLength)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP3_CPLAINTEXT_EXTRACT, "EExtractBufferTooSmall" );
+	    }
 	__ASSERT_ALWAYS(aBuf.MaxLength()>=aLength,Panic(EExtractBufferTooSmall));
 
 	DoExtract(aBuf,aPos,aLength);
@@ -1566,6 +1696,10 @@
 // inline text, depending on the flag.
 EXPORT_C void CPlainText::ExtractSelectively(TDes& aBuf,TInt aPos,TInt aLength,TUint aFlags)
 	{
+	if (aPos < 0 || aPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CPLAINTEXT_EXTRACTSELECTIVELY, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= DocumentLength(),Panic(ECharPosBeyondDocument));
 	DoExtract(aBuf,aPos,aLength,aFlags);
 	}
@@ -1656,6 +1790,10 @@
 //
 	{
 	__TEST_INVARIANT;
+	if (aPos<0 || aPos>DocumentLength()+1)
+	    {
+	    OstTrace0( TRACE_FATAL, CPLAINTEXT_UPDATEPAGETABLE, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos>=0 && aPos<=DocumentLength()+1,Panic(ECharPosBeyondDocument));
 	
 	if (iPageTable)
@@ -1672,6 +1810,10 @@
 @return The page number containing document position aPos. */
     {
 	__TEST_INVARIANT;
+	if (aPos<0 || aPos>DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CPLAINTEXT_PAGECONTAININGPOS, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos>=0 && aPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
 
     if (!iPageTable || (iPageTable->Count()<1))
@@ -1725,7 +1867,15 @@
 field types, see the UID values defined in flddef.h. */
 	{
 	__TEST_INVARIANT;
+	if (aPos<0 || aPos>DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CPLAINTEXT_INSERTFIELDL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos>=0 && aPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
+	if (!aField)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CPLAINTEXT_INSERTFIELDL, "ENoTextField" );
+	    }
 	__ASSERT_ALWAYS(aField,Panic(ENoTextField));
 
 	if (!FieldSetPresent())
@@ -1752,6 +1902,10 @@
 position, or a panic occurs. */
 	{
 	__TEST_INVARIANT;
+	if (aPos<0 || aPos>DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CPLAINTEXT_UPDATEFIELDL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos>=0 && aPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
 
 	if (!FieldSetPresent())
@@ -1816,6 +1970,10 @@
 at aPos. */
 	{
 	__TEST_INVARIANT;
+	if (aPos<0 || aPos>DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CPLAINTEXT_REMOVEFIELD, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos>=0 && aPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
 
 	TBool fieldRemoved=EFalse;
@@ -1902,6 +2060,10 @@
 field located at aPos. */
 	{
 	__TEST_INVARIANT;
+	if (aPos<0 || aPos>DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CPLAINTEXT_CONVERTFIELDTOTEXT, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos>=0 && aPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
 
 	TBool fieldConverted=EFalse;
--- a/textrendering/texthandling/stext/TXTFMLYR.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/texthandling/stext/TXTFMLYR.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -23,6 +23,11 @@
 #include <txtfmstm.h>
 #include "TXTSTD.H"
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "TXTFMLYRTraces.h"
+#endif
+
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
 #include "TXTFMLYR_INTERNAL.H"
 #endif
@@ -148,8 +153,16 @@
 @param aExcludeCount The number of layers to be excluded. By default, zero. */
 	{
 // ASSERT: aExcludeCount is positive.
+	if (aExcludeCount<0)
+	    {
+	    OstTrace0( TRACE_FATAL, CFORMATLAYER_EXTERNALIZECHAINL, "ECannotStoreFormatLayerChain" );
+	    }
 	__ASSERT_ALWAYS(aExcludeCount>=0,Panic(ECannotStoreFormatLayerChain));
 // ASSERT: The number of layers to be excluded is less than the total no. of layers.
+	if (aExcludeCount>=ChainCount())
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CFORMATLAYER_EXTERNALIZECHAINL, "ECannotStoreFormatLayerChain" );
+	    }
 	__ASSERT_ALWAYS(aExcludeCount<ChainCount(),Panic(ECannotStoreFormatLayerChain));
 	TInt aCount=ChainCount()-aExcludeCount;
 	aStream.WriteInt8L(aCount);  // Store the chain length.
@@ -166,6 +179,10 @@
 	if (aDescendantCount)
 		{
 // ASSERT: The format layer chain is consistent.
+		if (iBasedOn==NULL)
+		    {
+		    OstTrace0( TRACE_DUMP, CFORMATLAYER_EXTERNALIZELAYERSRECURSEL, "ECorruptFormatLayerChain" );
+		    }
 		__ASSERT_ALWAYS(iBasedOn!=NULL,Panic(ECorruptFormatLayerChain));
 		iBasedOn->ExternalizeLayersRecurseL(aStream,--aDescendantCount);
 		}
@@ -360,6 +377,10 @@
 EAllAttributes, all attributes are written; if EFixedAttributes, tabs, 
 bullets and borders are not written. */
 	{
+	if (aParaFormat==NULL)
+	    {
+	    OstTrace0( TRACE_FATAL, CPARAFORMATLAYER_SENSEEFFECTIVEL, "ENullFormatPointer" );
+	    }
 	__ASSERT_ALWAYS(aParaFormat!=NULL,Panic(ENullFormatPointer));
 	aParaFormat->Reset();
 	TParaFormatMask mask;
@@ -390,6 +411,10 @@
 EAllAttributes, all attributes are written; if EFixedAttributes, tabs, bullets 
 and borders are not written. */
 	{
+	if (aParaFormat==NULL)
+	    {
+	    OstTrace0( TRACE_FATAL, CPARAFORMATLAYER_SENSEL, "ENullFormatPointer" );
+	    }
 	__ASSERT_ALWAYS(aParaFormat!=NULL,Panic(ENullFormatPointer));
 
 	iStore.SenseParaFormatL(*aParaFormat,aMask,aMode);
--- a/textrendering/texthandling/stext/TXTFMSTM.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/texthandling/stext/TXTFMSTM.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -24,6 +24,11 @@
 #include <txtfmstm.h>
 
 #include "TXTSTD.H"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "TXTFMSTMTraces.h"
+#endif
+
 
 const TInt KMaxFormatStreamLength=0x400;  // 1024 bytes
 
@@ -290,6 +295,10 @@
 void RFormatStream::CopyL(const RFormatStream& aSource)
 	{
 	TInt size = aSource.iEnd - aSource.iBase;
+	if (size < 0)
+	    {
+	    OstTrace0( TRACE_DUMP, RFORMATSTREAM_COPYL, "EDebug" );
+	    }
 	__ASSERT_DEBUG(size >= 0,Panic(EDebug));
 	if (size == 0)
 		Reset();
@@ -357,6 +366,10 @@
 	{
 	__TEST_INVARIANT;
 	aLength=iEnd-iBase;
+	if (!((iBase==NULL && aLength==0) || (iBase!=NULL && aLength>0)))
+	    {
+	    OstTrace0( TRACE_DUMP, RFORMATSTREAM_PTR, "ECorruptFormatLayer" );
+	    }
 	__ASSERT_DEBUG((iBase==NULL && aLength==0) || (iBase!=NULL && aLength>0),Panic(ECorruptFormatLayer));
 	return iBase;
 	}
@@ -1594,7 +1607,15 @@
 			}
 		}
 // ASSERT: The tabList offsets are as we would expect in a normal (correct) completion.	
+	if (offsetInDesired!=aDesiredTabCount)
+	    {
+	    OstTrace0( TRACE_FATAL, RFORMATSTREAM_MERGETABLISTS, "EStoreTabError" );
+	    }
 	__ASSERT_ALWAYS(offsetInDesired==aDesiredTabCount,Panic(EStoreTabError));
+	if (offsetInCurrent!=aCurrentTabCount)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_RFORMATSTREAM_MERGETABLISTS, "EStoreTabError" );
+	    }
 	__ASSERT_ALWAYS(offsetInCurrent==aCurrentTabCount,Panic(EStoreTabError));
 	return requiredTabCount;
 	}
@@ -1774,6 +1795,11 @@
 	//
 	// Read typeface name
 	TInt typefaceLength=length-KTypefaceFlags;
+	
+	if ((typefaceLength%2)!=0)
+	    {
+	    OstTrace0( TRACE_DUMP, RFORMATSTREAM_READVALUE, "ECorruptFormatLayer" );
+	    }
 	__ASSERT_DEBUG((typefaceLength%2)==0,Panic(ECorruptFormatLayer)); // must be an even number
 
 	TPtr name=aTypeface.iName.Des();
@@ -1830,6 +1856,10 @@
 	{
 	TInt length=TheAttributeLength[aType];
 
+	if (length<0)
+	    {
+	    OstTrace0( TRACE_DUMP, RFORMATSTREAM_LENGTH, "EAttributeLengthLookupNegative" );
+	    }
 	__ASSERT_DEBUG(length>=0,Panic(EAttributeLengthLookupNegative));
 	if (length>0)
 		return length;
--- a/textrendering/texthandling/stext/TXTFRMAT.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/texthandling/stext/TXTFRMAT.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -23,6 +23,11 @@
 #include "TXTFRMAT.H"
 
 #include "TXTSTD.H"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "TXTFRMATTraces.h"
+#endif
+
 
 
 const TInt KParaDefaultLanguage=0;
@@ -647,6 +652,10 @@
 of tab stops, use TabCount(). 
 @return The tab stop located at the specified index. */
 	{
+	if (aTabIndex>=TabCount())
+	    {
+	    OstTrace0( TRACE_FATAL, CPARAFORMAT_TABSTOP, "ETabNotFound" );
+	    }
 	__ASSERT_ALWAYS(aTabIndex<TabCount(),Panic(ETabNotFound));
 	
 	return (iTabList)
--- a/textrendering/texthandling/stext/TXTGLOBL.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/texthandling/stext/TXTGLOBL.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -24,6 +24,11 @@
 #include "TXTGLOBL.H"
 
 #include "TXTSTD.H"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "TXTGLOBLTraces.h"
+#endif
+
 
 /**
 @internalAll
@@ -56,7 +61,15 @@
 Default is EDefaultTextGranularity bytes (=256). 
 @return Pointer to the global text object. */
 	{
+	if (aGlobalParaLayer==NULL)
+	    {
+	    OstTrace0( TRACE_FATAL, CGLOBALTEXT_NEWL, "ENullFormatLayerHandle" );
+	    }
 	__ASSERT_ALWAYS(aGlobalParaLayer!=NULL,Panic(ENullFormatLayerHandle));
+	if (aGlobalCharLayer==NULL)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CGLOBALTEXT_NEWL, "ENullFormatLayerHandle" );
+	    }
 	__ASSERT_ALWAYS(aGlobalCharLayer!=NULL,Panic(ENullFormatLayerHandle));
 
 	CGlobalText* self=new(ELeave) CGlobalText(aGlobalParaLayer,aGlobalCharLayer);
@@ -74,7 +87,15 @@
 restored from the specified read-stream.  The global text object *uses* (does 
 not own) the supplied global format layers.*/
 	{
+	if (aGlobalParaLayer==NULL)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP2_CGLOBALTEXT_NEWL, "ENullFormatLayerHandle" );
+	    }
 	__ASSERT_ALWAYS(aGlobalParaLayer!=NULL,Panic(ENullFormatLayerHandle));
+	if (aGlobalCharLayer==NULL)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP3_CGLOBALTEXT_NEWL, "ENullFormatLayerHandle" );
+	    }
 	__ASSERT_ALWAYS(aGlobalCharLayer!=NULL,Panic(ENullFormatLayerHandle));
 
 	CGlobalText* self=new(ELeave) CGlobalText(aGlobalParaLayer,aGlobalCharLayer);
@@ -235,6 +256,10 @@
 formatting. 
 @param aStartPos The start position for the view. */
 	{
+	if (aStartPos<0 || aStartPos>DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CGLOBALTEXT_GETCHARS, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aStartPos>=0 && aStartPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
 
 	aView.Set(Read(aStartPos));
--- a/textrendering/texthandling/stext/TXTINDEX.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/texthandling/stext/TXTINDEX.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -27,6 +27,11 @@
 #include "TXTSTYLE.H"
 #include "TXTINDEX.H"
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "TXTINDEXTraces.h"
+#endif
+
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
 #include "TXTFMLYR_INTERNAL.H"
 #include "TXTSTYLE_INTERNAL.H"
@@ -70,6 +75,10 @@
 		// ASSERT: The basedOn link is valid.
 		CFormatLayer* thisLayer=(*iParaIx)[para].iParaAttribs->iParaFormat;
 		CFormatLayer* base=CONST_CAST(CFormatLayer*,thisLayer->SenseBase());
+		if (base==NULL)
+		    {
+		    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_DBGTESTINVARIANT, "base==NULL" );
+		    }
 		__ASSERT_DEBUG(base!=NULL,User::Invariant());
 		if ((*iParaIx)[para].iParaAttribs->iRefCount>0)
 			numberOfReferencesToSharedList++;
@@ -83,7 +92,15 @@
 				const RPhraseAttribsEntry* phrase=&(*iPhraseIx)[currentPhraseElement];
 				CCharFormatLayer* charFormatLayer=phrase->CharFormat();
 				// ASSERT: The basedOn link is valid.
+				if (charFormatLayer->SenseBase()==NULL)
+				    {
+				    OstTrace0( TRACE_DUMP, DUP1_CRICHTEXTINDEX_DBGTESTINVARIANT, "charFormatLayer->SenseBase()==NULL" );
+				    }
 				__ASSERT_DEBUG(charFormatLayer->SenseBase()!=NULL,User::Invariant());
+				if (TInt(charFormatLayer->SenseBase())<=0x1000)
+				    {
+				    OstTrace0( TRACE_DUMP, DUP2_CRICHTEXTINDEX_DBGTESTINVARIANT, "TInt(charFormatLayer->SenseBase())<=0x1000" );
+				    }
 				__ASSERT_DEBUG(TInt(charFormatLayer->SenseBase())>0x1000,User::Invariant());
 				sumOfPhraseLengths+=(*iPhraseIx)[currentPhraseElement].Length();
 				if ((*iPhraseIx)[currentPhraseElement].Length()==0)
@@ -94,16 +111,34 @@
 				{
 				CCharFormatLayer* charFormatLayer=(*iParaIx)[para].iParaAttribs->iCharFormat;
 				// ASSERT: The basedOn link is valid.
+				if (charFormatLayer->SenseBase()==NULL)
+				    {
+				    OstTrace0( TRACE_DUMP, DUP3_CRICHTEXTINDEX_DBGTESTINVARIANT, "charFormatLayer->SenseBase()==NULL" );
+				    }
 				__ASSERT_DEBUG(charFormatLayer->SenseBase()!=NULL,User::Invariant());
 				sumOfPhraseLengths+=(*iParaIx)[para].iLength;
 				}
 			}
+		if (sumOfPhraseLengths!=paragraphLength)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP4_CRICHTEXTINDEX_DBGTESTINVARIANT, "sumOfPhraseLengths!=paragraphLength" );
+		    }
 		__ASSERT_DEBUG(sumOfPhraseLengths==paragraphLength,User::Invariant());
 		}
 // ASSERT: We have no unexpected phrases left over
+	if (currentPhraseElement!=-1 &&
+            currentPhraseElement!=iPhraseIx->Count())
+	    {
+	    OstTrace0( TRACE_DUMP, DUP5_CRICHTEXTINDEX_DBGTESTINVARIANT, "We have no unexpected phrases left over" );
+	    }
 	__ASSERT_DEBUG(currentPhraseElement==-1 ||
 					currentPhraseElement==iPhraseIx->Count(),User::Invariant());
 // ASSERT: There is either zero(0) or one(1) zero length phrase in the whole index
+	if (!((zeroLengthPhraseCount==0) ||
+            (zeroLengthPhraseCount==1 && iPendingNewPhrasePos!=EInsertCharFormatReset)))
+	    {
+	    OstTrace0( TRACE_DUMP, DUP6_CRICHTEXTINDEX_DBGTESTINVARIANT, "There is either zero(0) or one(1) zero length phrase in the whole index" );
+	    }
 	__ASSERT_DEBUG( (zeroLengthPhraseCount==0) ||
 					(zeroLengthPhraseCount==1 && iPendingNewPhrasePos!=EInsertCharFormatReset),
 					User::Invariant());
@@ -117,6 +152,11 @@
 		while ((currentSharedPara=iterator++)!=NULL)
 			totalReferenceCount+=currentSharedPara->iRefCount;
 		}
+	if ((numberOfReferencesToSharedList!=totalReferenceCount) &&
+            (numberOfReferencesToSharedList!=totalReferenceCount-1))
+	    {
+	    OstTrace0( TRACE_DUMP, DUP7_CRICHTEXTINDEX_DBGTESTINVARIANT, "Invariant" );
+	    }
 	__ASSERT_DEBUG((numberOfReferencesToSharedList==totalReferenceCount) ||
 				   (numberOfReferencesToSharedList==totalReferenceCount-1),User::Invariant());
 // ASSERT: iPictureCount corresponds to the number of pictures in the stored in the index.
@@ -126,6 +166,10 @@
 		picCount+=((*iPhraseIx)[item].IsPicturePhrase())
 					? 1
 					: 0;
+	if (iPictureCount!=picCount)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP8_CRICHTEXTINDEX_DBGTESTINVARIANT, "Invariant" );
+	    }
 	__ASSERT_DEBUG(iPictureCount==picCount,User::Invariant());
 #endif
 	}
@@ -186,6 +230,10 @@
 	TInt count;
 	if (iPhraseIx)
 		{// Destroy the phrase index and its contents.
+		if (!iParaIx)
+		    {
+		    OstTrace0( TRACE_FATAL, CRICHTEXTINDEX_CRICHTEXTINDEX, "EPhraseIxPresentWithNoParaIx" );
+		    }
 		__ASSERT_ALWAYS(iParaIx,Panic(EPhraseIxPresentWithNoParaIx));
 		count=iPhraseIx->Count();
 		for (TInt offset=0;offset<count;offset++)
@@ -211,6 +259,10 @@
 	TDblQueIter<CParaAttribs> iterator(iSharedParaQueHead);
 	while ((currentSharedPara=iterator++)!=NULL)
 		currentSharedPara->Release(currentSharedPara->iRefCount);
+	if (!iSharedParaQueHead.IsEmpty())
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CRICHTEXTINDEX_CRICHTEXTINDEX, "ERichTextIndexIntegrityErr" );
+	    }
 	__ASSERT_ALWAYS(iSharedParaQueHead.IsEmpty(),Panic(ERichTextIndexIntegrityErr));
 	}
 
@@ -397,6 +449,10 @@
 		{// For each para inserted between the fist and last
 		TParaAttribsEntry& para=(*iParaIx)[pastePos.iParaElement+paraItem];
 		TInt length=ParaLengthFromBuffer(buf)+1;
+		if (length==KErrNotFound)
+		    {
+		    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_INSERTL, "EInsertEmbeddedParaErr" );
+		    }
 		__ASSERT_DEBUG(length!=KErrNotFound,Panic(EInsertEmbeddedParaErr));
 		para.iLength=length;
 		buf.Set(buf.Right(buf.Length()-length));
@@ -452,6 +508,10 @@
 			current.iPhrase->AdjustLength(-1);  // collapse phrase by right amount
 			if (insertPendingPos!=EInsertCharFormatReset)
 				{
+				if (current.iPhrase->Length()!=0)
+				    {
+				    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_SPLITPARAGRAPHATPASTEPOSL, "Invariant" );
+				    }
 				__ASSERT_DEBUG(current.iPhrase->Length()==0,User::Invariant());
 				iPendingNewPhrasePos=insertPendingPos;
 				}
@@ -459,9 +519,14 @@
 				{
 				RemoveFromPhraseIx(iPos.iPhraseElement,1);
 				current.iParaAttribs->iPhraseCount--;
+				if (current.iParaAttribs->PhraseCount()<=1)
+				    {
+				    OstTrace0( TRACE_DUMP, DUP1_CRICHTEXTINDEX_SPLITPARAGRAPHATPASTEPOSL, "Invariant" );
+				    }
 				__ASSERT_DEBUG(current.iParaAttribs->PhraseCount()>1,User::Invariant());
 				}
 			}
+		OstTrace1( TRACE_DUMP, DUP2_CRICHTEXTINDEX_SPLITPARAGRAPHATPASTEPOSL, "Leave code=%d", ret );
 		User::Leave(ret);
 		}
 	if (insertPendingPos != EInsertCharFormatReset)
@@ -490,8 +555,16 @@
 
 	RebalanceIndex();
 // ASSERT: A valid picture header, referencing a valid picture has been inserted.
+	if (!aPicHdr.iPicture.IsPtr() || aPicHdr.iPicture.AsPtr()==NULL)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CRICHTEXTINDEX_INSERTL, "EInsertNullPicHdrData" );
+	    }
 	__ASSERT_ALWAYS(aPicHdr.iPicture.IsPtr() && aPicHdr.iPicture.AsPtr()!=NULL,Panic(EInsertNullPicHdrData));
 // ASSERT: The current insert pos hasn't been changed without cancelling SetInsertCharFormat.
+	if ((iPendingNewPhrasePos!=EInsertCharFormatReset) && (aPos!=iPendingNewPhrasePos))
+	    {
+	    OstTrace0( TRACE_FATAL, DUP2_CRICHTEXTINDEX_INSERTL, "ESetInsertCharFormatIntegrityErr" );
+	    }
 	__ASSERT_ALWAYS((iPendingNewPhrasePos==EInsertCharFormatReset) || (aPos==iPendingNewPhrasePos),
 					Panic(ESetInsertCharFormatIntegrityErr));
 	if (iPendingNewPhrasePos!=EInsertCharFormatReset)
@@ -516,6 +589,10 @@
 		}
 	GetCurrentRecords(current);
 //	ASSERT: The reclaim succeeded.  We must always end up with a PhraseIx-not constant char format.
+	if (current.iPhrase==NULL)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP3_CRICHTEXTINDEX_INSERTL, "EReclaimShareError" );
+	    }
 	__ASSERT_DEBUG(current.iPhrase!=NULL,Panic(EReclaimShareError));
 	TRAPD(ret1,
 	SplitPhraseL(aPos));  // Phrase may not be split if at boundary.
@@ -771,6 +848,10 @@
 	CancelInsertCharFormat();
 	ScanToPosition(aPos,EScanToPositionAbsolute,&iLastUsed);
 
+	if (iPos.iParaElementOffset!=0)
+	    {
+	    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_DELETEPARAGRAPH, "EDeleteParagraphInvalidStartValue" );
+	    }
 	__ASSERT_DEBUG(iPos.iParaElementOffset==0,Panic(EDeleteParagraphInvalidStartValue));
 
 	TIndexDeleteInfo info;
@@ -813,6 +894,10 @@
 	TInt startParaLength=current.iParaEntry->iLength;
 	TInt lengthRemainingInPara=startParaLength-iPos.iParaElementOffset;
 
+	if (aLength>=lengthRemainingInPara)
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXTINDEX_DELETEFROMPARAGRAPH, "EDeleteFromParagraphInvalidRange" );
+	    }
 	__ASSERT_ALWAYS(aLength<lengthRemainingInPara,Panic(EDeleteFromParagraphInvalidRange));
 	}
 #endif
@@ -1028,6 +1113,10 @@
 */
 void CRichTextIndex::SetInsertCharFormatL(const TCharFormatX& aFormat,const TCharFormatXMask& aMask,TInt aPos)
 	{
+	if (InsertCharFormatIsActive() && aPos!=iPendingNewPhrasePos)
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXTINDEX_SETINSERTCHARFORMATL, "ESetInsertCharFormatIntegrityErr" );
+	    }
 	__ASSERT_ALWAYS(!InsertCharFormatIsActive() || aPos==iPendingNewPhrasePos,
 					Panic(ESetInsertCharFormatIntegrityErr));
 	if (InsertCharFormatIsActive())
@@ -1039,6 +1128,10 @@
 void CRichTextIndex::NewInsertCharFormatL(const TCharFormatX& aFormat,
 	const TCharFormatXMask& aMask, TInt aPos)
 	{
+	if (InsertCharFormatIsActive())
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXTINDEX_NEWINSERTCHARFORMATL, "ESetInsertCharFormatIntegrityErr" );
+	    }
 	__ASSERT_ALWAYS(!InsertCharFormatIsActive(),
 		Panic(ESetInsertCharFormatIntegrityErr));
 	ScanToPosition(aPos,EScanToPositionMatchLeft);
@@ -1071,6 +1164,7 @@
 			if (PhraseSplit())
 				MergePhrases(aPos);
 			}
+		OstTrace0( TRACE_FATAL, DUP1_CRICHTEXTINDEX_NEWINSERTCHARFORMATL, "LeaveNoMemory" );
 		User::LeaveNoMemory();
 		}
 	iPendingNewPhrasePos=aPos;
@@ -1089,11 +1183,19 @@
 
 CCharFormatLayer* CRichTextIndex::GetCurrentInsertCharFormat()
 	{
+	if (!InsertCharFormatIsActive())
+	    {
+	    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_GETCURRENTINSERTCHARFORMAT, "ESetInsertCharFormatIntegrityErr" );
+	    }
 	__ASSERT_DEBUG(InsertCharFormatIsActive(),
 		Panic(ESetInsertCharFormatIntegrityErr));
 	ScanToPosition(iPendingNewPhrasePos,EScanToPositionMatchLeft);
 	TCurrentIndexRecords current;
 	GetCurrentRecords(current);
+	if ((*iPhraseIx)[iPos.iPhraseElement].Length() != 0)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CRICHTEXTINDEX_GETCURRENTINSERTCHARFORMAT, "ESetInsertCharFormatIntegrityErr" );
+	    }
 	__ASSERT_DEBUG((*iPhraseIx)[iPos.iPhraseElement].Length() == 0,
 		Panic(ESetInsertCharFormatIntegrityErr));
 	return (*iPhraseIx)[iPos.iPhraseElement].CharFormat();
@@ -1123,6 +1225,10 @@
 	if (iRollbackParaAttribsHandle)
 		{
 		// ASSERT: The specified para attribs is indeed in the share list.
+		if (!iRollbackParaAttribsHandle->IsShared())
+		    {
+		    OstTrace0( TRACE_FATAL, CRICHTEXTINDEX_REBALANCEINDEX, "EParaAttribsNotInSharedList" );
+		    }
 		__ASSERT_ALWAYS(iRollbackParaAttribsHandle->IsShared(),Panic(EParaAttribsNotInSharedList));
 		iRollbackParaAttribsHandle->Release();
 		iRollbackParaAttribsHandle=NULL;
@@ -1154,6 +1260,10 @@
 */
 TBool CRichTextIndex::DeleteInsertCharFormat()
 	{
+	if (!InsertCharFormatIsActive())
+	    {
+	    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_DELETEINSERTCHARFORMAT, "Invariant" );
+	    }
 	__ASSERT_DEBUG(InsertCharFormatIsActive(), User::Invariant());
 	ScanToPosition(iPendingNewPhrasePos,EScanToPositionMatchLeft);
 	TCurrentIndexRecords current;
@@ -1455,6 +1565,10 @@
 
 void CRichTextIndex::SplitPhraseL(TInt aPhrase,TInt anOffset,RPhraseAttribsEntry& aPhraseAttribs,CParaAttribs& aParaAttribs)
 	{
+	if (anOffset<=0 || anOffset>=aPhraseAttribs.Length())
+	    {
+	    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_SPLITPHRASEL, "Invariant" );
+	    }
 	__ASSERT_DEBUG(anOffset>0 && anOffset<aPhraseAttribs.Length(),User::Invariant());
 //
 	CCharFormatLayer* charLayer=CCharFormatLayer::NewCopyBaseL(aPhraseAttribs.CharFormat());
@@ -1487,9 +1601,17 @@
 //
 	{
 	CParaAttribs* paraAttribs=aParaEntry.iParaAttribs;
+	if (paraAttribs->iPhraseCount!=1)
+	    {
+	    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_SHARE, "Invariant" );
+	    }
 	__ASSERT_DEBUG(paraAttribs->iPhraseCount==1,User::Invariant());
 
 	RPhraseAttribsEntry& phraseAttribs=iPhraseIx->At(aPhrase);
+	if (phraseAttribs.IsPicturePhrase())
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CRICHTEXTINDEX_SHARE, "Invariant" );
+	    }
 	__ASSERT_DEBUG(!phraseAttribs.IsPicturePhrase(),User::Invariant());
 
 	CParaAttribs* share=GetParaAttribs(paraAttribs,*phraseAttribs.CharFormat());
@@ -1522,6 +1644,10 @@
 
 	TInt phrase=iPos.iPhraseElement;
 	TInt base=iPos.iParaBasePhraseElement;
+	if (phrase<base || phrase>=base+paraAttribs->iPhraseCount)
+	    {
+	    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_APPLYCHARFORMATROLLBACK, "Invariant" );
+	    }
 	__ASSERT_DEBUG(phrase>=base && phrase<base+paraAttribs->iPhraseCount,User::Invariant());
 	if (phrase<base+paraAttribs->iPhraseCount-1)	// merge to the right
 		MergePhrases(phrase+1,iPhraseIx->At(phrase+1),*paraAttribs);
@@ -1537,6 +1663,10 @@
 // aPos to aPos+(aLength-1).
 //
 	{
+	if (aLength<0)
+	    {
+	    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_APPLYCHARFORMATL, "Invariant" );
+	    }
 	__ASSERT_DEBUG(aLength>=0,User::Invariant());
 	__TEST_INVARIANT;
 
@@ -1590,6 +1720,10 @@
 
 		do
 			{
+			if (phrase>=iPos.iParaBasePhraseElement+paraAttribs->iPhraseCount)
+			    {
+			    OstTrace0( TRACE_DUMP, DUP1_CRICHTEXTINDEX_APPLYCHARFORMATL, "Invariant" );
+			    }
 			__ASSERT_DEBUG(phrase<iPos.iParaBasePhraseElement+paraAttribs->iPhraseCount,User::Invariant());
 //
 			RPhraseAttribsEntry* phraseAttribs=&iPhraseIx->At(phrase);
@@ -1627,6 +1761,10 @@
 				phraseAttribs=&iPhraseIx->At(phrase);		// SplitPhraseL modifies the index array, we must do this!
 				}
 
+			if (phraseAttribs->Length()!=len)
+			    {
+			    OstTrace0( TRACE_DUMP, DUP2_CRICHTEXTINDEX_APPLYCHARFORMATL, "Invariant" );
+			    }
 			__ASSERT_DEBUG(phraseAttribs->Length()==len,User::Invariant());
 
 // STEP 2.3	Change the format of the current phrase layer
@@ -1647,6 +1785,10 @@
 			charsToFormat-=len;
 			} while (charsToFormat);
 
+		if (phrase!=iPos.iParaBasePhraseElement+paraAttribs->iPhraseCount && aLength!=0)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP3_CRICHTEXTINDEX_APPLYCHARFORMATL, "Invariant" );
+		    }
 		__ASSERT_DEBUG(phrase==iPos.iParaBasePhraseElement+paraAttribs->iPhraseCount || aLength==0,User::Invariant());
 
 // STEP 3	Reduce the paragraph attributes back to canonical form
@@ -1672,9 +1814,25 @@
 		iPos.iParaBasePhraseElement=phrase;
 #ifdef _DEBUG
 		ScanToPosition(aPos,EScanToPositionAbsolute);
+		if (iPos.iDocPos!=aPos)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP4_CRICHTEXTINDEX_APPLYCHARFORMATL, "Invariant" );
+		    }
 		__ASSERT_DEBUG(iPos.iDocPos==aPos,User::Invariant());
+		if (iPos.iPhraseElement!=phrase)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP5_CRICHTEXTINDEX_APPLYCHARFORMATL, "Invariant" );
+		    }
 		__ASSERT_DEBUG(iPos.iPhraseElement==phrase,User::Invariant());
+		if (iPos.iParaElementOffset!=paraOffset)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP6_CRICHTEXTINDEX_APPLYCHARFORMATL, "Invariant" );
+		    }
 		__ASSERT_DEBUG(iPos.iParaElementOffset==paraOffset,User::Invariant());
+		if (iPos.iPhraseElementOffset!=phraseOffset)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP7_CRICHTEXTINDEX_APPLYCHARFORMATL, "Invariant" );
+		    }
 		__ASSERT_DEBUG(iPos.iPhraseElementOffset==phraseOffset,User::Invariant());
 		__TEST_INVARIANT;
 #endif
@@ -2227,6 +2385,10 @@
 	else
 		{// No match, so piece together new shared paraAttribs and add to shared para list
 		sourceParaAttribs->iRefCount=1;
+		if (sourcePhrase->IsPicturePhrase())
+		    {
+		    OstTrace0( TRACE_FATAL, CRICHTEXTINDEX_GETPARAATTRIBS, "EReleasCharFormatLayerOwnershipCalledOnPicturePhrase" );
+		    }
 		__ASSERT_ALWAYS(!sourcePhrase->IsPicturePhrase(),Panic(EReleasCharFormatLayerOwnershipCalledOnPicturePhrase));
 		sourceParaAttribs->iCharFormat=sourcePhrase->ReleaseCharFormatLayerOwnership();
 		sourcePhrase->Discard();
@@ -2356,6 +2518,10 @@
 		}
 	else
 		{
+		if (iPos.iParaBasePhraseElement!=phraseElement)
+		    {
+		    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_SCANTOPOSITION, "EDebug" );
+		    }
 		__ASSERT_DEBUG(iPos.iParaBasePhraseElement==phraseElement,Panic(EDebug));
 		}
 	iPos.iPhraseElement=phraseElement;
@@ -2460,6 +2626,10 @@
 		return;  // aSplitPos on a phrase boundary; urgo no split.
 	TCurrentIndexRecords current; GetCurrentRecords(current);
 // ASSERT: This function set can only be called on CParaAttribs that specific char format.
+	if (current.iPhrase==NULL)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CRICHTEXTINDEX_SPLITPHRASEL, "ESplitPhraseCalledOnSharedPara" );
+	    }
 	__ASSERT_ALWAYS(current.iPhrase!=NULL,Panic(ESplitPhraseCalledOnSharedPara));
 	DoSplitPhraseL(*current.iPhrase,iPos.iPhraseElementOffset,current.iParaAttribs);
 	}
@@ -2489,6 +2659,10 @@
 //
 	{
 // ASSERT: Cannot split a picture phrase.
+	if (aCurrentPhrase.IsPicturePhrase())
+	    {
+	    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_DOSPLITPHRASEL, "ESplitPhraseCalledOnPicturePhrase" );
+	    }
 	__ASSERT_DEBUG(!aCurrentPhrase.IsPicturePhrase(),Panic(ESplitPhraseCalledOnPicturePhrase));
 	CCharFormatLayer* layer=CCharFormatLayer::NewCopyBaseL(aCurrentPhrase.CharFormat());
 	CleanupStack::PushL(layer);
@@ -2520,6 +2694,10 @@
 		return ETrue;
 	//
 	TInt sharedParaCount=SharedParaCount(this);
+	if (sharedParaCount<1 && (sharedParaCount!=0 || phraseCount<=0))
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXTINDEX_HASMARKUPDATA, "ERichTextIndexIntegrityErr" );
+	    }
 	__ASSERT_ALWAYS(sharedParaCount>=1 || (sharedParaCount==0 && phraseCount>0),Panic(ERichTextIndexIntegrityErr));
 	if (sharedParaCount>1)
 		return ETrue;
@@ -2592,6 +2770,10 @@
 		if (sParaAttribs->IsShared())
 			{
 			tParaAttribs=map->Item(sParaAttribs);
+			if (tParaAttribs==NULL)
+			    {
+			    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_APPENDPARAINDEXL, "ESharedFormatsMapIntegrityError" );
+			    }
 			__ASSERT_DEBUG(tParaAttribs!=NULL,Panic(ESharedFormatsMapIntegrityError));
 			tParaAttribs->iRefCount++;
 			}
@@ -2625,6 +2807,10 @@
 	CParaAttribs* currentSharedPara;
 	while ((currentSharedPara=iterator++)!=NULL)
 		{
+		if (!currentSharedPara->IsShared())
+		    {
+		    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_APPENDSHAREDFORMATSL, "Invariant" );
+		    }
 		__ASSERT_DEBUG(currentSharedPara->IsShared(),User::Invariant());
 
 		CParaFormatLayer* sPl=currentSharedPara->iParaFormat;
@@ -2689,10 +2875,18 @@
 		{
 		TInt jj=pictureMap->At(kk);
 		TPictureHeader* sHeader=(*aSource->iPhraseIx)[jj].PictureHeaderPtr();
+		if (!sHeader)
+		    {
+		    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_APPENDPHRASEINDEXL, "Invariant" );
+		    }
 		__ASSERT_DEBUG(sHeader,User::Invariant());
 		if (sHeader->iPicture.IsPtr())
 			{	// transfer picture to us
 			TPictureHeader* tHeader=(*iPhraseIx)[jj+originalPhraseCount].PictureHeaderPtr();
+			if (!tHeader)
+			    {
+			    OstTrace0( TRACE_DUMP, DUP1_CRICHTEXTINDEX_APPENDPHRASEINDEXL, "Invariant" );
+			    }
 			__ASSERT_DEBUG(tHeader,User::Invariant());
 			tHeader->iPicture=sHeader->iPicture.AsPtr();
 			sHeader->iPicture=NULL;
@@ -2842,6 +3036,10 @@
 	{
 #ifdef _DEBUG
 // ASSERT: iLength is +ve (applying to character formatting, or	is set to indicate a picture phrase.
+	if (iLength<0 && !IsPicturePhrase())
+	    {
+	    OstTrace0( TRACE_DUMP, RPHRASEATTRIBSENTRY_DBGTESTINVARIANT, "Invariant" );
+	    }
 	__ASSERT_DEBUG(iLength>=0 || IsPicturePhrase(),User::Invariant());
 #endif
 	}
@@ -2925,6 +3123,11 @@
 	{
 // ASSERT: The length of a picture phrase may only be altered by deleting it, in which case
 //			the only adjustment made will be an increment of -1 (EPictureIndicator).
+	if (IsPicturePhrase() && (!IsPicturePhrase() || aIncrement!=EPictureIndicator)
+                                      && (!IsPicturePhrase() || aIncrement!=0) )
+	    {
+	    OstTrace0( TRACE_DUMP, RPHRASEATTRIBSENTRY_ADJUSTLENGTH, "EModifiedPicturePhraseLength" );
+	    }
 	__ASSERT_DEBUG(!IsPicturePhrase() || (IsPicturePhrase() && aIncrement==EPictureIndicator)
 									  || (IsPicturePhrase() && aIncrement==0)
 									  ,Panic(EModifiedPicturePhraseLength));
--- a/textrendering/texthandling/stext/TXTIXSTR.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/texthandling/stext/TXTIXSTR.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -27,6 +27,11 @@
 #include "TXTINDEX.H"
 #include "TXTSTD.H"
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "TXTIXSTRTraces.h"
+#endif
+
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
 #include "TXTFMLYR_INTERNAL.H"
 #endif
@@ -142,6 +147,10 @@
 			{
 			RPhraseAttribsEntry& phrase=*current.iPhrase;
 			TPictureHeader* hdr=phrase.PictureHeaderPtr();
+			if (!hdr)
+			    {
+			    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_STOREPICTURESL, "ERichTextStorePictureIntegrityError" );
+			    }
 			__ASSERT_DEBUG(hdr,Panic(ERichTextStorePictureIntegrityError));
 			TBool pictureInMemory=(hdr->iPicture.IsPtr() && hdr->iPicture.AsPtr());
 			if (pictureInMemory)
@@ -194,12 +203,20 @@
 			if (phrase.IsPicturePhrase())
 				{
 				TPictureHeader* hdr=phrase.PictureHeaderPtr();
+				if (!hdr)
+				    {
+				    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_DETACHFROMSTOREL, "ERichTextStorePictureIntegrityError" );
+				    }
 				__ASSERT_DEBUG(hdr,Panic(ERichTextStorePictureIntegrityError));
 				//
 				if (hdr->iPicture.IsId())
 					{
 					TRAPD(r,
 					phrase.PictureHandleL(iText.PictureFactory(),iText.StoreResolver(),iPos.iDocPos,MLayDoc::EForceLoadTrue));  // swizzles
+					if (r!=KErrNone && !hdr->iPicture.IsId())
+					    {
+					    OstTrace0( TRACE_DUMP, DUP1_CRICHTEXTINDEX_DETACHFROMSTOREL, "ERichTextStorePictureIntegrityError" );    
+					    }
 					__ASSERT_DEBUG(r==KErrNone || hdr->iPicture.IsId(),Panic(ERichTextStorePictureIntegrityError));
 					if (r==KErrNotSupported)  // we don't recognise the picture type
 						{
@@ -207,10 +224,16 @@
 						currentPos+=CurrentPhraseLength()-offsetIntoUnit;
 						continue;
 						}
+					
+					OstTrace1( TRACE_FATAL, DUP3_CRICHTEXTINDEX_DETACHFROMSTOREL, "Leave code=%d", r );
 					User::LeaveIfError(r);
 					}
 				//
 				// recurse the call to detach the picture from the store
+				if (!hdr->iPicture.IsPtr())
+				    {
+				    OstTrace0( TRACE_DUMP, DUP2_CRICHTEXTINDEX_DETACHFROMSTOREL, "ERichTextStorePictureIntegrityError" );
+				    }
 				__ASSERT_DEBUG(hdr->iPicture.IsPtr(),Panic(ERichTextStorePictureIntegrityError));
 				hdr->iPicture->DetachFromStoreL(aDegree);
 				}
@@ -257,6 +280,10 @@
 // on the specified global format layers. 
 //
 	{
+	if (iParaIx->Count()!=1 || (*iParaIx)[0].iLength!=1)
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXTINDEX_INTERNALIZEL, "ERtIndexInternalizeCalledOnNonEmptySource" );
+	    }
 	__ASSERT_ALWAYS(iParaIx->Count()==1 && (*iParaIx)[0].iLength==1,Panic(ERtIndexInternalizeCalledOnNonEmptySource));
 	TRtPasteContext context(NULL,aGlobalParaLayer,aGlobalCharLayer,aStyleList);
 	InternalizeRtiHeaderL(aStream,context);
@@ -295,6 +322,10 @@
 			}
 		else
 			{
+			if (phraseCount<=1)
+			    {
+			    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_GENERATEALLPHRASELINKSL, "EDebug" );
+			    }
 			 __ASSERT_DEBUG(phraseCount>1,Panic(EDebug));
 
 			// If the phrase count is too great the CParaAttribs object is corrupt.
@@ -395,7 +426,15 @@
 //
 	{
 	CStyleList* list = iText.StyleList();
+	if (!list)
+	    {
+	    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_EXTERNALIZEREFERENCEDSTYLESL, "EStyleClipboardIntegrityError" );
+	    }
 	__ASSERT_DEBUG(list,Panic(EStyleClipboardIntegrityError));
+	if (aStart.iParaElement > aEnd.iParaElement)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CRICHTEXTINDEX_EXTERNALIZEREFERENCEDSTYLESL, "EStyleClipboardIntegrityError" );
+	    }
 	__ASSERT_DEBUG(aStart.iParaElement <= aEnd.iParaElement,Panic(EStyleClipboardIntegrityError));
 
 	TUint8 numStyles = 0;
@@ -516,6 +555,10 @@
 		TInt index=iText.StyleList()->IndexByPtr(STATIC_CAST(const CParaFormatLayer*,para->iParaFormat->SenseBase()));
 		if (index!=KErrNotFound)
 			{
+			if (index>=aBuf.Length())
+			    {
+			    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_MARKSTYLEREGISTER, "EStyleClipboardIntegrityError" );
+			    }
 			__ASSERT_DEBUG(index<aBuf.Length(),Panic(EStyleClipboardIntegrityError));
 			if (aBuf[index]!=KRegisterItemPresent)
 				{
@@ -534,6 +577,10 @@
 // register, aBuf.
 //
 	{
+	if (aSharedCount>(TInt)KMaxTUint8)
+	    {
+	    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_EXTERNALIZEITEMSPRESENTINREGISTERL, "ESharedParaCountStreamOverflow" );
+	    }
 	__ASSERT_DEBUG(aSharedCount<=(TInt)KMaxTUint8,Panic(ESharedParaCountStreamOverflow));
 	aStream.WriteUint8L(aSharedCount);
 	CParaAttribs* currentSharedPara=NULL;
@@ -557,6 +604,10 @@
 // Externalize each object from the paragraph style list that has a corresponding mark in the register aBuf.
 //
 	{
+	if (aRefStyleCount > (TInt)KMaxTUint8)
+	    {
+	    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_EXTERNALIZEITEMSPRESENTINSTYLEREGISTERL, "EStyleClipboardIntegrityError" );
+	    }
 	__ASSERT_DEBUG(aRefStyleCount <= (TInt)KMaxTUint8,Panic(EStyleClipboardIntegrityError));
 	aStream.WriteUint8L(aRefStyleCount);
 	TInt count=aBuf.Length();
@@ -628,6 +679,10 @@
 			phraseCount=(aEnd.iPhraseElement-aStart.iPhraseElement)+1;  // copied text contained within 1 para
 		else
 			phraseCount=(aEnd.iPhraseElement-aEnd.iParaBasePhraseElement)+1;
+		if (phraseCount>lastParaAttribs->iPhraseCount)
+		    {
+		    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_EXTERNALIZEPARAIXL, "ERtExternalizeParaIx" );
+		    }
 		__ASSERT_DEBUG(phraseCount<=lastParaAttribs->iPhraseCount,Panic(ERtExternalizeParaIx));
 		aStream.WriteInt32L(phraseCount);
 		if (refNo>0)
@@ -923,6 +978,10 @@
 	TInt match=1;
 	while ((currentSharedPara=iterator++)!=NULL && aOrdinal!=match)
 		match++;
+	if (currentSharedPara==NULL)
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXTINDEX_SHAREDPARAATTRIBS, "EEndOfSharedParaListEncountered" );
+	    }
 	__ASSERT_ALWAYS(currentSharedPara!=NULL,Panic(EEndOfSharedParaListEncountered));
 	return currentSharedPara;
 	}
@@ -1310,7 +1369,11 @@
 		characterCount+=para.iLength;
 		}
 	CleanupStack::Pop();  // firstParaVirtualPhrase
-// ASSERT: At this point we have pasted all paras that were in the stream.	
+// ASSERT: At this point we have pasted all paras that were in the stream.
+	if (aContext.iParasPasted!=aCompleteParaCount)
+	    {
+	    OstTrace0( TRACE_DUMP, CRICHTEXTINDEX_PASTEPARAIXL, "EPasteParaIxError" );
+	    }
 	__ASSERT_DEBUG(aContext.iParasPasted==aCompleteParaCount,Panic(EPasteParaIxError));
 	return characterCount;
 	}
@@ -1334,6 +1397,10 @@
 		CleanupStack::Pop(2);  // layer & specificParaAttribs
 		//
 		para.iParaAttribs=specificParaAttribs;
+		if (para.iParaAttribs==NULL)
+		    {
+		    OstTrace0( TRACE_FATAL, CRICHTEXTINDEX_DOPASTEFIRSTINTOPARAL, "ESharedFormatsMapIntegrityError" );
+		    }
 		__ASSERT_ALWAYS(para.iParaAttribs!=NULL,Panic(ESharedFormatsMapIntegrityError));
 		}
 	else
@@ -1359,6 +1426,10 @@
 	if (refNo>0)
 		{// Link to para attribs in shared list & up its reference count
 		para.iParaAttribs=aMap.Item(refNo);
+		if (para.iParaAttribs==NULL)
+		    {
+		    OstTrace0( TRACE_FATAL, CRICHTEXTINDEX_DOPASTEINTOPARAL, "ESharedFormatsMapIntegrityError" );
+		    }
 		__ASSERT_ALWAYS(para.iParaAttribs!=NULL,Panic(ESharedFormatsMapIntegrityError));
 		para.iParaAttribs->iRefCount++;
 		}
@@ -1391,6 +1462,10 @@
 //
 	{
 // ASSERT: Having pasted the paraIx, the para containig pastePos has had the containing phrase split at that point.
+	if (aContext.iPastePos.iPhraseElementOffset!=0)
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXTINDEX_PASTEPHRASEIXL, "EPastePhraseIxErr" );
+	    }
 	__ASSERT_ALWAYS(aContext.iPastePos.iPhraseElementOffset==0,Panic(EPastePhraseIxErr));
 
 	TInt offset=0;
@@ -1422,6 +1497,10 @@
 	TBool isPicture=(TBool)aStream.ReadUint8L();
 	TInt phraseLength=aStream.ReadInt32L();
 
+	if (!(isPicture && phraseLength==1 || !isPicture))
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXTINDEX_DOPASTEPHRASEL, "KErrCorrupt" );
+	    }
 	__ASSERT_ALWAYS(isPicture && phraseLength==1 || !isPicture,User::Leave(KErrCorrupt));
 	
 	CCharFormatLayer* charLayer=CCharFormatLayer::NewL(aStream);
@@ -1464,7 +1543,10 @@
 					picPhrase->iCharFormat=NULL;
 					CleanupStack::PopAndDestroy(picPhrase);
 					if (r!=KErrNotSupported)
-						User::Leave(r);
+					    {
+						OstTrace1( TRACE_FATAL, DUP2_CRICHTEXTINDEX_DOPASTEPHRASEL, "Leave code=%d", r );
+					    User::Leave(r);
+					    }
 				}
 			}
 		}
@@ -1489,6 +1571,7 @@
 //
 	{
 	NormalizeSharedList();
+	OstTrace1( TRACE_FATAL, CRICHTEXTINDEX_RBPASTESHAREDFORMATSL, "Leave code=%d", aRet );
 	User::Leave(aRet);
 	}
 		
@@ -1543,6 +1626,7 @@
 		(*iParaIx)[aPos.iParaElement].iParaAttribs=iRollbackParaAttribsHandle;
 		iRollbackParaAttribsHandle=NULL;
 		}
+	OstTrace1( TRACE_FATAL, CRICHTEXTINDEX_RBPASTEPARAIXL, "Leave code=%d", aRet );
 	User::Leave(aRet);
 	}
 
@@ -1570,5 +1654,6 @@
 //
 	{
 	RbRemoveInsertedPhraseAttribsEntries(aPos.iPhraseElement,aPhraseCount);
+	OstTrace1( TRACE_FATAL, CRICHTEXTINDEX_RBPASTEPHRASEIXL, "Leave code=%d", aRet );
 	User::Leave(aRet);
 	}
--- a/textrendering/texthandling/stext/TXTRICH.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/texthandling/stext/TXTRICH.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -26,6 +26,11 @@
 #include "ParseLst.h"
 #include "TXTCLIPBOARD.H"
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "TXTRICHTraces.h"
+#endif
+
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
 #include "TXTETEXT_INTERNAL.H"
 #include "TXTRICH_INTERNAL.H"
@@ -37,7 +42,15 @@
 	{
 #ifdef _DEBUG
 // ASSERT: The global format layers are never null.
+	if (iGlobalParaFormatLayer == NULL)
+	    {
+	    OstTrace0( TRACE_DUMP, CRICHTEXT_DBGTESTINVARIANT, "Invariant" );
+	    }
 	__ASSERT_DEBUG(iGlobalParaFormatLayer != NULL, User::Invariant());
+	if (iGlobalCharFormatLayer == NULL)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CRICHTEXT_DBGTESTINVARIANT, "Invariant" );
+	    }
 	__ASSERT_DEBUG(iGlobalCharFormatLayer != NULL, User::Invariant());
 	if (IndexPresent())
 		{
@@ -49,10 +62,20 @@
 			TParaAttribsEntry entry = (*iIndex->iParaIx)[offset];
 			cumulativeParaLength += entry.iLength;
 			}
+		if (cumulativeParaLength != (DocumentLength() + 1))
+		    {
+		    OstTrace0( TRACE_DUMP, DUP2_CRICHTEXT_DBGTESTINVARIANT, "Invariant" );
+		    }
 		__ASSERT_DEBUG(cumulativeParaLength == (DocumentLength() + 1), User::Invariant());
 		}
 		// Change here for defect INC005336.
 		// This defect is present when the assertion below fails.
+        if ((iParserData != NULL) &&
+                (iParserData->HaveRange()) &&
+                (iParserData->EndParse() > DocumentLength()))
+            {
+            OstTrace0( TRACE_DUMP, DUP3_CRICHTEXT_DBGTESTINVARIANT, "Invariant" );
+            }
 		__ASSERT_DEBUG( (iParserData == NULL) || \
 			(!iParserData->HaveRange()) || \
 			(iParserData->EndParse() <= DocumentLength()), User::Invariant());
@@ -80,7 +103,15 @@
 @return The rich text object. */
 	{
 	// Create new rich text containing just a single end-of-document character.
+	if (aGlobalParaLayer == NULL)
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_NEWL, "ENullFormatLayerHandle" );
+	    }
 	__ASSERT_ALWAYS(aGlobalParaLayer != NULL, Panic(ENullFormatLayerHandle));
+	if (aGlobalCharLayer == NULL)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CRICHTEXT_NEWL, "ENullFormatLayerHandle" );
+	    }
 	__ASSERT_ALWAYS(aGlobalCharLayer != NULL, Panic(ENullFormatLayerHandle));
 
 	CRichText* self = new(ELeave) CRichText(aGlobalParaLayer, aGlobalCharLayer);
@@ -122,7 +153,15 @@
 used internally for storing paragraph attributes. Default = EMultiPara.
 @return The new rich text object. */
 	{
+	if (aGlobalParaLayer == NULL)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP2_CRICHTEXT_NEWL, "ENullFormatLayerHandle" );
+	    }
 	__ASSERT_ALWAYS(aGlobalParaLayer != NULL, Panic(ENullFormatLayerHandle));
+	if (aGlobalCharLayer == NULL)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP3_CRICHTEXT_NEWL, "ENullFormatLayerHandle" );
+	    }
 	__ASSERT_ALWAYS(aGlobalCharLayer != NULL, Panic(ENullFormatLayerHandle));
 
 	CRichText* self = new(ELeave) CRichText(aGlobalParaLayer, aGlobalCharLayer, CONST_CAST(CStyleList*, &aStyleList));
@@ -159,7 +198,15 @@
 which should rarely need to be changed.
 @return The new rich text object. */
 	{
+	if (aGlobalParaLayer == NULL)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP4_CRICHTEXT_NEWL, "ENullFormatLayerHandle" );
+	    }
 	__ASSERT_ALWAYS(aGlobalParaLayer != NULL, Panic(ENullFormatLayerHandle));
+	if (aGlobalCharLayer == NULL)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP5_CRICHTEXT_NEWL, "ENullFormatLayerHandle" );
+	    }
 	__ASSERT_ALWAYS(aGlobalCharLayer != NULL, Panic(ENullFormatLayerHandle));
 
 	CRichText* self = new(ELeave) CRichText(aGlobalParaLayer, aGlobalCharLayer);
@@ -205,8 +252,20 @@
 	{
 	// Restore a new rich text from the specified stream, that uses the specified global layers, and the
 	// specified picture header factory and store, if this rich text supports pictures.
+	if (!aPictureFactory && aStoreResolver)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP6_CRICHTEXT_NEWL, "EInvalidPictureFactorySettings" );
+	    }
 	__ASSERT_ALWAYS(!(!aPictureFactory && aStoreResolver), Panic(EInvalidPictureFactorySettings));
+	if (aGlobalParaLayer == NULL)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP7_CRICHTEXT_NEWL, "ENullFormatLayerHandle" );
+	    }
 	__ASSERT_ALWAYS(aGlobalParaLayer != NULL, Panic(ENullFormatLayerHandle));
+	if (aGlobalCharLayer == NULL)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP8_CRICHTEXT_NEWL, "ENullFormatLayerHandle" );
+	    }
 	__ASSERT_ALWAYS(aGlobalCharLayer != NULL, Panic(ENullFormatLayerHandle));
 
 	CRichText* self = new(ELeave) CRichText(aGlobalParaLayer, aGlobalCharLayer);
@@ -383,8 +442,20 @@
 	__TEST_INVARIANT;
 
 	TInt documentLength = DocumentLength();
+	if (aPos < 0 || aPos > documentLength)
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_DOCOPYTOSTOREL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= documentLength,Panic(ECharPosBeyondDocument));
+	if (aLength < 0)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CRICHTEXT_DOCOPYTOSTOREL, "ECopyToClipboardNegativeLength" );
+	    }
 	__ASSERT_ALWAYS(aLength >= 0,Panic(ECopyToClipboardNegativeLength));
+	if (aPos + aLength > documentLength)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP2_CRICHTEXT_DOCOPYTOSTOREL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos + aLength <= documentLength,Panic(ECharPosBeyondDocument));
 
 	if (aLength == 0)
@@ -490,6 +561,10 @@
 //
 	{
 	__TEST_INVARIANT;
+	if (aPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_DOPASTERTFROMSTOREL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos <= DocumentLength(), Panic(ECharPosBeyondDocument));
 
 	TUid type = KClipboardUidTypeRichTextWithStyles;
@@ -532,12 +607,17 @@
 		CreateAndGenerateMarkupComponentL();  // create the index if it does not already exist
 	TStreamId id = aDictionary.At(KClipboardUidTypePlainText);
 // ASSERT: We have rich text, so the plain text stream must exist.
+	if (id == KNullStreamId)
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_PASTERICHTEXTFROMSTOREL, "EClipboardIntegrity" );
+	    }
 	__ASSERT_ALWAYS(id != KNullStreamId,Panic(EClipboardIntegrity));
 	TInt consumed = CPlainText::DoPasteFromStoreL(aStore, id, aPos);
 	TRAPD(ret, CompletePasteRichTextFromStoreL(aStore, aRichTextStreamId, aPos, aStylePasteMode));
 	if (ret != KErrNone)
 		{
 		CPlainText::Delete(aPos,consumed);
+		OstTrace1( TRACE_FATAL, DUP1_CRICHTEXT_PASTERICHTEXTFROMSTOREL, "Leave code=%d", ret );
 		User::Leave(ret);
 		}
 	return consumed;
@@ -625,7 +705,15 @@
 @param aBuf The descriptor to insert. */
 	{
 	__TEST_INVARIANT;
+	if (aPos < 0 || aPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_INSERTL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= DocumentLength(), Panic(ECharPosBeyondDocument));
+	if (aChar == EPictureCharacter)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CRICHTEXT_INSERTL, "ENonOverloadedInsertCalledWithPictureCharacter" );
+	    }
 	__ASSERT_ALWAYS(aChar!= EPictureCharacter, Panic(ENonOverloadedInsertCalledWithPictureCharacter));
 
 	if (aChar < 0x10000)
@@ -669,6 +757,10 @@
 //
 	{
 	__TEST_INVARIANT;
+	if (aPos < 0 || aPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_RTINSERTL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= DocumentLength(), Panic(ECharPosBeyondDocument));
 
 	int length = aBuf.Length();
@@ -708,6 +800,10 @@
 and information about the picture. */
 	{
 	__TEST_INVARIANT;
+	if (aPos < 0 || aPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, DUP2_CRICHTEXT_INSERTL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= DocumentLength(), Panic(ECharPosBeyondDocument));
 
 	CleanupStack::PushL(aHeader.iPicture);
@@ -758,8 +854,20 @@
 	// Delete commences at, and includes, character position aPos.
 	__TEST_INVARIANT;
 
+	if (aPos < 0 || aPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_DELETEL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= DocumentLength(), Panic(ECharPosBeyondDocument));
+	if (aLength < 0)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CRICHTEXT_DELETEL, "EDebugDeleteZeroLength" );
+	    }
 	__ASSERT_ALWAYS(aLength >= 0, Panic(EDebugDeleteZeroLength));
+	if (aPos + (aLength - 1) > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, DUP2_CRICHTEXT_DELETEL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos + (aLength - 1) <= DocumentLength(), Panic(ECharPosBeyondDocument));
 
 	TBool requireMerge = EFalse;
@@ -797,7 +905,15 @@
 	// Store the length of the text before we commence with deletions.
 	TInt initialDocLen=DocumentLength();
 
+	if (aPos < 0 || aPos > initialDocLen)
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_DELETEPARAGRAPH, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= initialDocLen, Panic(ECharPosBeyondDocument));
+	if (aPos + aLength > initialDocLen + 1)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CRICHTEXT_DELETEPARAGRAPH, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos + aLength <= initialDocLen + 1, Panic(ECharPosBeyondDocument));
 
 	if (aLength <= 0)
@@ -847,7 +963,15 @@
 	// Guaranteed not to leave if this pre-condition holds true.
 	__TEST_INVARIANT;
 
+	if (aPos < 0 || aPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_DELETEFROMPARAGRAPH, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= DocumentLength(), Panic(ECharPosBeyondDocument));
+	if (aPos + (aLength - 1) > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CRICHTEXT_DELETEFROMPARAGRAPH, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos + (aLength - 1) <= DocumentLength(), Panic(ECharPosBeyondDocument));
 
 	if (aLength <= 0)
@@ -934,6 +1058,10 @@
 	// of this paragraph.  If aPos is already on a paragraph boundary then do nothing.
 	//
 	__TEST_INVARIANT;
+	if (aPos < 0 || aPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_PARAGRAPHNUMBERFORPOS, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= DocumentLength(), Panic(ECharPosBeyondDocument));
 
 	if (IndexPresent())
@@ -972,6 +1100,10 @@
 
 void CRichText::SetExtendedInsertCharFormatL(const TCharFormatX& aFormat, const TCharFormatXMask& aMask, TInt aPos)
 	{
+	if (aPos < 0 || aPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_SETEXTENDEDINSERTCHARFORMATL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= DocumentLength(), Panic(ECharPosBeyondDocument));
 	CreateAndGenerateMarkupComponentL();
 	CRichTextIndex* index = iIndex.AsPtr();
@@ -1054,8 +1186,20 @@
 	// immediately inserted.
 	//
 	__TEST_INVARIANT;
+	if (aPos < 0 || aPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_DELSETINSERTCHARFORMATL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= DocumentLength(), Panic(ECharPosBeyondDocument));
+	if (aLength < 0)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CRICHTEXT_DELSETINSERTCHARFORMATL, "EDebugDeleteZeroLength" );
+	    }
 	__ASSERT_ALWAYS(aLength >= 0, Panic(EDebugDeleteZeroLength));
+	if (aPos + (aLength - 1) > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, DUP2_CRICHTEXT_DELSETINSERTCHARFORMATL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos + (aLength - 1) <= DocumentLength(), Panic(ECharPosBeyondDocument));
 
 	TBool parasMerged = EFalse;
@@ -1112,8 +1256,20 @@
 	// character position aPos to aPos+aLength-1.
 	//
 	__TEST_INVARIANT;
+	if (aPos < 0 || aPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_APPLYPARAFORMATL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= DocumentLength(), Panic(ECharPosBeyondDocument));
+	if (aLength < 0)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CRICHTEXT_APPLYPARAFORMATL, "EApplyParaFormatNegativeLength" );
+	    }
 	__ASSERT_ALWAYS(aLength >= 0,Panic(EApplyParaFormatNegativeLength));
+	if (aPos + (aLength - 1) > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, DUP2_CRICHTEXT_APPLYPARAFORMATL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos + (aLength - 1) <= DocumentLength(), Panic(ECharPosBeyondDocument));
 
 	CreateAndGenerateMarkupComponentL();
@@ -1147,8 +1303,20 @@
 	__TEST_INVARIANT;
 	
 	TInt document_length = DocumentLength();
+	if (aPos < 0)
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_APPLYCHARFORMATL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0,Panic(ECharPosBeyondDocument));
+	if (aLength < 0)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CRICHTEXT_APPLYCHARFORMATL, "EApplyCharFormatNegativeLength" );
+	    }
 	__ASSERT_ALWAYS(aLength >= 0,Panic(EApplyCharFormatNegativeLength));
+	if (aPos + aLength - 1 > document_length)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP2_CRICHTEXT_APPLYCHARFORMATL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos + aLength - 1 <= document_length,Panic(ECharPosBeyondDocument));
 
 	//If some characters are highlighted AND current position + highlighted txt = document length	
@@ -1170,8 +1338,20 @@
 void CRichText::ApplyExtendedCharFormatL(const TCharFormatX& aFormat,const TCharFormatXMask& aMask,TInt aPos,TInt aLength)
 	{
 	TInt document_length = DocumentLength();
+	if (aPos < 0)
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_APPLYEXTENDEDCHARFORMATL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0,Panic(ECharPosBeyondDocument));
+	if (aLength < 0)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CRICHTEXT_APPLYEXTENDEDCHARFORMATL, "EApplyCharFormatNegativeLength" );
+	    }
 	__ASSERT_ALWAYS(aLength >= 0,Panic(EApplyCharFormatNegativeLength));
+	if (aPos + aLength - 1 > document_length)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP2_CRICHTEXT_APPLYEXTENDEDCHARFORMATL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos + aLength - 1 <= document_length,Panic(ECharPosBeyondDocument));
 	
 	DoApplyExtendedCharFormatL(aFormat, aMask, aPos, aLength);
@@ -1228,9 +1408,25 @@
 	// character positions aPos to aPos+aLength-1.
 	//
 	__TEST_INVARIANT;
+	if (aPos < 0 || aPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_APPLYPARAGRAPHSTYLEL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= DocumentLength(), Panic(ECharPosBeyondDocument));
+	if (aLength < 0)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CRICHTEXT_APPLYPARAGRAPHSTYLEL, "EApplyParaStyleNegativeLength" );
+	    }
 	__ASSERT_ALWAYS(aLength >= 0, Panic(EApplyParaStyleNegativeLength));
+	if (aPos + (aLength - 1) > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, DUP2_CRICHTEXT_APPLYPARAGRAPHSTYLEL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos + (aLength - 1) <= DocumentLength(), Panic(ECharPosBeyondDocument));
+	if (!StyleListPresent())
+	    {
+	    OstTrace0( TRACE_FATAL, DUP3_CRICHTEXT_APPLYPARAGRAPHSTYLEL, "ERichTextNotSetForUsingStyles" );
+	    }
 	__ASSERT_ALWAYS(StyleListPresent(), Panic(ERichTextNotSetForUsingStyles));
 
 	CreateAndGenerateMarkupComponentL();
@@ -1262,6 +1458,10 @@
 	// Update the rich text index following the change of an applied paragraph style.
 	//
 	__TEST_INVARIANT;
+	if (!StyleListPresent())
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_NOTIFYSTYLECHANGEDL, "ERichTextNotSetForUsingStyles" );
+	    }
 	__ASSERT_ALWAYS(StyleListPresent(), Panic(ERichTextNotSetForUsingStyles));
 
 	CreateAndGenerateMarkupComponentL();
@@ -1285,8 +1485,20 @@
 indicates whether this object is a style, or just a paragraph format layer. */
 	{
 	__TEST_INVARIANT;
+	if (aPos < 0 || aPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_PARAGRAPHSTYLE, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= DocumentLength(), Panic(ECharPosBeyondDocument));
+	if (aLength < 0)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CRICHTEXT_PARAGRAPHSTYLE, "EParagraphStyleNegativeLength" );
+	    }
 	__ASSERT_ALWAYS(aLength >= 0,Panic(EParagraphStyleNegativeLength));
+	if (aPos + (aLength - 1) > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, DUP2_CRICHTEXT_PARAGRAPHSTYLE, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos + (aLength - 1) <= DocumentLength(), Panic(ECharPosBeyondDocument));
 
 	if (IndexPresent())
@@ -1337,8 +1549,20 @@
 
 	__TEST_INVARIANT;
 
+	if (aPos < 0 || aPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_REMOVESPECIFICPARAFORMATL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= DocumentLength(), Panic(ECharPosBeyondDocument));
+	if (aLength < 0)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CRICHTEXT_REMOVESPECIFICPARAFORMATL, "ERemoveSpecificParaFormatNegativeLength" );
+	    }
 	__ASSERT_ALWAYS(aLength >= 0, Panic(ERemoveSpecificParaFormatNegativeLength));
+	if (aPos + (aLength - 1) > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, DUP2_CRICHTEXT_REMOVESPECIFICPARAFORMATL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos + (aLength - 1) <= DocumentLength(), Panic(ECharPosBeyondDocument));
 
 	if (IndexPresent())
@@ -1370,8 +1594,20 @@
 	__TEST_INVARIANT;
 	
 	TInt document_length = DocumentLength();
+	if (aPos < 0 || aPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_REMOVESPECIFICCHARFORMATL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= DocumentLength(), Panic(ECharPosBeyondDocument));
+	if (aLength < 0)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CRICHTEXT_REMOVESPECIFICCHARFORMATL, "ERemoveSpecificParaFormatNegativeLength" );
+	    }
 	__ASSERT_ALWAYS(aLength >= 0, Panic(ERemoveSpecificParaFormatNegativeLength));
+	if (aPos + (aLength - 1) > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, DUP2_CRICHTEXT_REMOVESPECIFICCHARFORMATL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos + (aLength - 1) <= DocumentLength(), Panic(ECharPosBeyondDocument));
 	
 	// in correspondance to INC097216, character format removing considers the height of end of document
@@ -1420,6 +1656,10 @@
 	{
 	__TEST_INVARIANT;
 	TInt documentLength = DocumentLength();
+	if (aPos < 0 || aPos > documentLength)
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_GETTEXTANDEXTENDEDFORMAT, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= documentLength, Panic(ECharPosBeyondDocument));
 	if (!IndexPresent())
 		{
@@ -1443,6 +1683,10 @@
 KErrNone if there is. */
 	{
 	__TEST_INVARIANT;
+	if (aPos < 0 || aPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_GETPICTURESIZEINTWIPS, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= DocumentLength(), Panic(ECharPosBeyondDocument));
 
 	if (IndexPresent())
@@ -1472,6 +1716,10 @@
 	__ETEXT_WATCH(PICTURE_HANDLE);
 
 	__TEST_INVARIANT;
+	if (aPos<0 || aPos>DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_PICTUREHANDLEL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos>=0 && aPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
 
 	if (IndexPresent())
@@ -1494,6 +1742,10 @@
 	__ETEXT_WATCH(GET_PARAGRAPH_FORMAT)
 
 	__TEST_INVARIANT;
+	if (aPos < 0 || aPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_GETPARAGRAPHFORMATL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= DocumentLength(), Panic(ECharPosBeyondDocument));
 
 	if (!IndexPresent())
@@ -1517,6 +1769,10 @@
 	__ETEXT_WATCH(GET_PARAGRAPH_FORMAT)
 
 	__TEST_INVARIANT;
+	if (aPos < 0 || aPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_GETSPECIFICPARAGRAPHFORMATL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= DocumentLength(), Panic(ECharPosBeyondDocument));
 
 	aFormat->Reset();
@@ -1555,8 +1811,20 @@
 	// Application: seeding paragraph formatting dialogs.
 	//
 	__TEST_INVARIANT;
+	if (aPos < 0 || aPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_GETPARAFORMATL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= DocumentLength(), Panic(ECharPosBeyondDocument));
+	if (aLength < 0)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CRICHTEXT_GETPARAFORMATL, "EGetParaFormatNegativeLength" );
+	    }
 	__ASSERT_ALWAYS(aLength >= 0, Panic(EGetParaFormatNegativeLength));
+	if (aPos + aLength > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, DUP2_CRICHTEXT_GETPARAFORMATL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos + aLength <= DocumentLength(), Panic(ECharPosBeyondDocument));
 
 	if (IndexPresent())
@@ -1603,8 +1871,20 @@
 	{
 	__TEST_INVARIANT;
 	int document_length = DocumentLength();
+	if (aPos < 0 || aPos > document_length)
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_GETEXTENDEDCHARFORMAT, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= document_length, Panic(ECharPosBeyondDocument));
+	if (aLength < 0)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CRICHTEXT_GETEXTENDEDCHARFORMAT, "EGetCharFormatNegativeLength" );
+	    }
 	__ASSERT_ALWAYS(aLength >= 0, Panic(EGetCharFormatNegativeLength));
+	if (aPos + aLength - 1 > document_length)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP2_CRICHTEXT_GETEXTENDEDCHARFORMAT, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos + aLength - 1 <= document_length, Panic(ECharPosBeyondDocument));
 
 	if (IndexPresent())
@@ -1626,6 +1906,10 @@
 
 	__TEST_INVARIANT;
 
+	if (aPos < 0 || aPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_GETSPECIFICCHARFORMATLEFTRIGHT, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= DocumentLength(), Panic(ECharPosBeyondDocument));
 
 	if (IndexPresent())
@@ -1783,6 +2067,10 @@
 
 	if (IndexPresent())
 		{
+		if (!aSource.IndexPresent())
+		    {
+		    OstTrace0( TRACE_DUMP, DUP1_CRICHTEXT_DOAPPENDTAKINGSOLEPICTUREOWNERSHIPL, "Invariant" );
+		    }
 		__ASSERT_DEBUG(aSource.IndexPresent(), User::Invariant());       // PrepareAppend should have sorted this
 
 		TGlobalLayerInfoAppend info(GlobalParaFormatLayer(), GlobalCharFormatLayer(), aSource.GlobalParaFormatLayer(), aSource.GlobalCharFormatLayer());
--- a/textrendering/texthandling/stext/TXTRTFLD.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/texthandling/stext/TXTRTFLD.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -25,6 +25,11 @@
 #include "TXTINDEX.H"
 #include "ParseLst.h"
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "TXTRTFLDTraces.h"
+#endif
+
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
 #include "TXTETEXT_INTERNAL.H"
 #endif 
@@ -47,6 +52,10 @@
 position, or a panic occurs. */
 	{
 	__TEST_INVARIANT;
+	if (aPos < 0 || aPos > DocumentLength())
+	    {
+	    OstTrace0( TRACE_DUMP, CRICHTEXT_UPDATEFIELDL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= DocumentLength(), Panic(ECharPosBeyondDocument));
 
  	TFindFieldInfo fieldInfo;
--- a/textrendering/texthandling/stext/TXTRTSTR.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/texthandling/stext/TXTRTSTR.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -26,6 +26,11 @@
 #include "TXTRTPFL.H"
 #include "ParseLst.h"
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "TXTRTSTRTraces.h"
+#endif
+
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
 #include "TXTETEXT_INTERNAL.H"
 #include "TXTRICH_INTERNAL.H"
@@ -402,8 +407,20 @@
 
 	__TEST_INVARIANT;
 	TInt documentLength = DocumentLength();
+	if (aPos < 0 || aPos > documentLength)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_CRICHTEXT_DETACHFROMSTOREL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= documentLength,Panic(ECharPosBeyondDocument));
+	if (aLength < 0)
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_DETACHFROMSTOREL, "ECopyToStreamNegativeLength" );
+	    }
 	__ASSERT_ALWAYS(aLength >= 0,Panic(ECopyToStreamNegativeLength));
+	if (aPos + aLength > documentLength)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP2_CRICHTEXT_DETACHFROMSTOREL, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos + aLength <= documentLength,Panic(ECharPosBeyondDocument));
 	
 	if (aLength > 0 && IndexPresent())
@@ -436,6 +453,10 @@
 the picture is stored in. */
 	{
 	__TEST_INVARIANT;
+	if (!aPictureFactory && aStoreResolver)
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_SETPICTUREFACTORY, "EInvalidPictureFactorySettings" );
+	    }
 	__ASSERT_ALWAYS(!(!aPictureFactory && aStoreResolver),Panic(EInvalidPictureFactorySettings));
 
 	iPictureFactory=aPictureFactory;
@@ -452,6 +473,10 @@
 picture header. */
 	{
 	__TEST_INVARIANT;
+	if (aPos<0 || aPos>DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_PICTUREHEADER, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos>=0 && aPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
 
 	return (IndexPresent())
@@ -470,6 +495,10 @@
 @see CRichText::PictureHandleL() */
 	{
 	__TEST_INVARIANT;
+	if (aPos<0 || aPos>DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CRICHTEXT_DROPPICTUREOWNERSHIP, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos>=0 && aPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
 
 	TPictureHeader* p = IndexPresent()? iIndex->PictureHeaderPtr(aPos) : 0;
--- a/textrendering/texthandling/stext/TXTSCAN.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/texthandling/stext/TXTSCAN.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -18,6 +18,11 @@
 
 #include "TXTETEXT.H"
 #include "TXTSTD.H"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "TXTSCANTraces.h"
+#endif
+
 
 
 EXPORT_C TInt CPlainText::CharPosOfParagraph(TInt& aLength,TInt aParaOffset)const
@@ -61,6 +66,10 @@
 	{
 	__TEST_INVARIANT;
 
+	if (aPos<0 || aPos>DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CPLAINTEXT_PARAGRAPHNUMBERFORPOS, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos>=0 && aPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
 	TUint scanMask=(EScanBackwards|EScanStayIfBoundary|EScanToUnitStart);
 	ScanParas(aPos,scanMask);
@@ -93,6 +102,10 @@
 	{
 	__TEST_INVARIANT;
 
+	if (aCurrentPos<0 || aCurrentPos>DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CPLAINTEXT_GETWORDINFO, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aCurrentPos>=0 && aCurrentPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
 	aStartPos=aLength=aCurrentPos;
 	// First find the start of the word.
@@ -112,6 +125,10 @@
 		scanMask|=EScanPunctuationIsDelimiter;
 	ScanWords(aLength,scanMask);
 	aLength-=aStartPos;
+	if (aLength+aStartPos>(DocumentLength()+1))
+	    {
+	    OstTrace0( TRACE_DUMP, DUP2_CPLAINTEXT_GETWORDINFO, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_DEBUG(aLength+aStartPos<=(DocumentLength()+1),Panic(ECharPosBeyondDocument));
 
 	__TEST_INVARIANT;
@@ -128,6 +145,10 @@
 paragraph. */
 	{
 	__TEST_INVARIANT;
+	if (aPos<0 || aPos>DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CPLAINTEXT_TOPARAGRAPHSTART, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos>=0 && aPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
 
 	int skipped = 0;
@@ -213,6 +234,10 @@
 CPlainText::EScanBackwards. 
 @return The number of characters skipped to reach the new document position. */
 	{
+	if (aPos<0 || aPos>DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CPLAINTEXT_SCANWORDS, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos>=0 && aPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
 	SScanData scanData;
 	InitScanControl(aPos,aScanMask,EUnitIsWord,scanData);
@@ -236,6 +261,10 @@
 CPlainText::EScanBackwards. 
 @return The number of characters skipped to reach the new document position. */
 	{
+	if (aPos<0 || aPos>DocumentLength())
+	    {
+	    OstTrace0( TRACE_FATAL, CPLAINTEXT_SCANPARAS, "ECharPosBeyondDocument" );
+	    }
 	__ASSERT_ALWAYS(aPos>=0 && aPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
 	SScanData scanData;
 	InitScanControl(aPos,aScanMask,EUnitIsParagraph,scanData);
--- a/textrendering/texthandling/stext/TXTSTYLE.CPP	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/texthandling/stext/TXTSTYLE.CPP	Tue Jul 06 16:23:19 2010 +0300
@@ -24,6 +24,11 @@
 #include "TXTFRMAT.H"
 #include "TXTSTD.H"
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "TXTSTYLETraces.h"
+#endif
+
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
 #include "TXTFMLYR_INTERNAL.H"
 #include "TXTSTYLE_INTERNAL.H"
@@ -164,6 +169,11 @@
 			{
 			TInt index=IndexByPtr(info.iStyleForNextPara);
 			// ASSERT: The style-to-follow is present in the list.
+			if (!((info.iStyleForNextPara==NULL) ||
+	                ((info.iStyleForNextPara) && (index!=KErrNotFound && index>=0 && index<styleCount))))
+			    {
+			    OstTrace0( TRACE_DUMP, CSTYLELIST_DBGTESTINVARIANT, "Invariant" );
+			    }
 			__ASSERT_DEBUG(
 				(info.iStyleForNextPara==NULL) ||
 				((info.iStyleForNextPara) && (index!=KErrNotFound && index>=0 && index<styleCount)),User::Invariant());
@@ -248,7 +258,15 @@
 @return A const reference to the style at position aIndex in the array. 
 @return A non-const reference to the style at position aIndex in the array. */
 	{
+	if (!iList)
+	    {
+	    OstTrace0( TRACE_FATAL, CSTYLELIST_AT, "EStyleIntegrityError" );
+	    }
 	__ASSERT_ALWAYS(iList,Panic(EStyleIntegrityError));
+	if (aIndex<0 || aIndex>=iList->Count())
+	    {
+	    OstTrace0( TRACE_DUMP, DUP3_CSTYLELIST_AT, "EStyleIndexOutOfRange" );
+	    }
 	__ASSERT_DEBUG(aIndex>=0 && aIndex<iList->Count(),Panic(EStyleIndexOutOfRange));
 	
 	return (*iList)[aIndex];
@@ -257,7 +275,15 @@
 
 EXPORT_C RParagraphStyleInfo& CStyleList::At(TInt aIndex)
 	{
+	if (!iList)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP2_CSTYLELIST_AT, "EStyleIntegrityError" );
+	    }
 	__ASSERT_ALWAYS(iList,Panic(EStyleIntegrityError));
+	if (aIndex<0 || aIndex>=iList->Count())
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CSTYLELIST_AT, "EStyleIndexOutOfRange" );
+	    }
 	__ASSERT_DEBUG(aIndex>=0 && aIndex<iList->Count(),Panic(EStyleIndexOutOfRange));
 
 	return (*iList)[aIndex];
@@ -333,6 +359,10 @@
 		TInt offset=(set.iStyleForNextPara!=NULL)
 			? IndexByPtr(style)
 			: -1;
+			if (!(offset==-1 || (offset>=0 && offset<Count())))
+			    {
+			    OstTrace0( TRACE_DUMP, CSTYLELIST_EXTERNALIZEL, "EStyleIntegrityError" );
+			    }
 		__ASSERT_DEBUG(offset==-1 || (offset>=0 && offset<Count()),Panic(EStyleIntegrityError));
 		aStream.WriteInt8L(offset);
 		}
@@ -426,6 +456,10 @@
 		if (cur_style.iStyle == aStyle)
 			{
 			// Assert that the style must occur only once in the style list.
+			if (index != -1)
+			    {
+			    OstTrace0( TRACE_DUMP, CSTYLELIST_REMOVE, "EStyleIntegrityError" );
+			    }
 			__ASSERT_DEBUG(index == -1,Panic(EStyleIntegrityError));
 			index = i;
 			}
@@ -459,6 +493,10 @@
 @return KErrNone if successful, or KErrNotFound if the first style contained 
 in the argument (aStyleSet.iStyle) is not in the style list. */
 	{
+	if (IndexByPtr(aStyleSet.iStyleForNextPara) == KErrNotFound)
+	    {
+	    OstTrace0( TRACE_FATAL, CSTYLELIST_SETSTYLETOFOLLOW, "EStyleIntegrityError" );
+	    }
 	__ASSERT_ALWAYS( IndexByPtr(aStyleSet.iStyleForNextPara) != KErrNotFound, Panic(EStyleIntegrityError) );
 	__TEST_INVARIANT;
 	
--- a/textrendering/texthandling/stext/TxtWriter.cpp	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/texthandling/stext/TxtWriter.cpp	Tue Jul 06 16:23:19 2010 +0300
@@ -19,6 +19,11 @@
 #include "TxtWriter.h"
 #include <txtetext.h>
 #include "TXTPLAIN.H"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "TxtWriterTraces.h"
+#endif
+
 
 static const TText KLineBreak = 0x0A;//Used by TSLBTransaltor class - 0x0A, 0x0D, {0x0D, 0x0A}
                               //character aequences found in the input stream will be translated 
@@ -99,6 +104,10 @@
 */
 void TParagraphTextWriter::WriteL(TText aChar)
 	{
+	if (aChar == 0x0D)
+	    {
+	    OstTrace0( TRACE_DUMP, TPARAGRAPHTEXTWRITER_WRITEL, "Invariant" );
+	    }
 	__ASSERT_DEBUG(aChar != 0x0D, User::Invariant());
 	if(aChar == KLineBreak)
 		{
@@ -126,6 +135,10 @@
 */
 void TLineTextWriter::WriteL(TText aChar)
 	{
+	if (aChar == 0x0D)
+	    {
+	    OstTrace0( TRACE_DUMP, TLINETEXTWRITER_WRITEL, "Invariant" );
+	    }
 	__ASSERT_DEBUG(aChar != 0x0D, User::Invariant());
 	TText prevChar = iPrevChar;
 	iPrevChar = aChar;
--- a/textrendering/texthandling/stext/Txtparse.cpp	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/texthandling/stext/Txtparse.cpp	Tue Jul 06 16:23:19 2010 +0300
@@ -19,6 +19,11 @@
 #include "TXTRICH.H"
 #include "TXTSTD.H"
 #include "ParseLst.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "TxtparseTraces.h"
+#endif
+
 
 
 // Install and activate a particular parser, app provides instance
@@ -38,6 +43,10 @@
 EXPORT_C void CRichText::DeactivateParser(MParser* aParser)
 	{
 	CParserList* activeParserList = (CParserList*)Dll::Tls();
+	if (!activeParserList)
+	    {
+	    OstTrace0( TRACE_DUMP, CRICHTEXT_DEACTIVATEPARSER, "EParserListNotInitialized" );
+	    }
 	__ASSERT_DEBUG(activeParserList, Panic(EParserListNotInitialized));
 	activeParserList->DeactivateParser(aParser);
 	if ((activeParserList->iRefCount == 0) && (activeParserList->iNumberInList == 0))
@@ -80,6 +89,10 @@
 // Create ParserLst instance and retain ownership of it but pass address to EText TLS
 void CRichText::CreateParserETextTLSL()
 	{
+	if (Dll::Tls() != NULL)
+	    {
+	    OstTrace0( TRACE_DUMP, CRICHTEXT_CREATEPARSERETEXTTLSL, "EParserListAlreadyExists" );
+	    }
 	__ASSERT_DEBUG(Dll::Tls() == NULL, Panic(EParserListAlreadyExists));
 	CParserList* activeParserList = new (ELeave) CParserList;
 	CleanupStack::PushL(activeParserList);
@@ -107,6 +120,10 @@
 	
 EXPORT_C TBool CRichText::ParseText(TInt& aStartOfTags, TInt& aLength, TBool aForceScanAllText)
 	{
+	if (!iIndex.IsPtr())
+	    {
+	    OstTrace0( TRACE_DUMP, CRICHTEXT_PARSETEXT, "EParserListTextIndexNotInitialized" );
+	    }
 	__ASSERT_ALWAYS(iIndex.IsPtr(),Panic(EParserListTextIndexNotInitialized));
 	TBool foundSomething = EFalse;
 	if (iParserData->iActiveParserList && iParserData->iEditObserver)
@@ -133,7 +150,15 @@
 	TBool success = EFalse;
 	TBuf<1> buf;
 
+	if (!iParserData->iActiveParserList)
+	    {
+	    OstTrace0( TRACE_DUMP, CRICHTEXT_DOCURSOROVERTAG, "EParserListNotInitialized" );
+	    }
 	__ASSERT_DEBUG(iParserData->iActiveParserList, Panic(EParserListNotInitialized));
+	if (!iParserData->iEditObserver)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CRICHTEXT_DOCURSOROVERTAG, "EParserListNotActive" );
+	    }
 	__ASSERT_DEBUG(iParserData->iEditObserver, Panic(EParserListNotActive));
 	GetExtendedCharFormat(format, varies, aPos, 1);
 	Extract(buf, aPos, 1);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textrendering/texthandling/traces/OstTraceDefinitions.h	Tue Jul 06 16:23:19 2010 +0300
@@ -0,0 +1,27 @@
+/*
+* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* the class for inline-text format retrieval - in its own header file to prevent low-level 
+* components dependent on this class from gaining unnecessary (and undesirable) dependencies 
+* on high-level components
+*
+*/
+
+#ifndef __OSTTRACEDEFINITIONS_H__
+#define __OSTTRACEDEFINITIONS_H__
+// OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler
+// REMOVE BEFORE CHECK-IN TO VERSION CONTROL
+// #define OST_TRACE_COMPILER_IN_USE
+#include <opensystemtrace.h>
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textrendering/texthandling/traces/fixed_id.definitions	Tue Jul 06 16:23:19 2010 +0300
@@ -0,0 +1,261 @@
+/*
+* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* the class for inline-text format retrieval - in its own header file to prevent low-level 
+* components dependent on this class from gaining unnecessary (and undesirable) dependencies 
+* on high-level components
+*
+*/
+
+#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt.
+[GROUP]TRACE_DUMP=0x89
+[TRACE]TRACE_DUMP[0x89]_TLINETEXTWRITER_WRITEL=0x1cb
+[TRACE]TRACE_DUMP[0x89]_TPARAGRAPHTEXTWRITER_WRITEL=0x1ca
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CEDITABLETEXT_CANCELFEPINLINEEDIT=0x13f
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CEDITABLETEXT_COMMITFEPINLINEEDITL=0x13e
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CEDITABLETEXT_STARTFEPINLINEEDITL=0x13a
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CEDITABLETEXT_UPDATEFEPINLINETEXTL=0x13c
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CFORMATLAYER_EXTERNALIZELAYERSRECURSEL=0x18e
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CPARSERLIST_ACTIVATEAPARSERL=0x133
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CPARSERLIST_DEACTIVATEPARSER=0x135
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CPARSERLIST_PARSETHISTEXT=0x138
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CPARSERLIST_TAGFORTHISPARSER=0x139
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CPLAINTEXT_DOCONSTRUCTL=0x141
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CPLAINTEXT_EXPORTASTEXTL=0x143
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_APPENDPARAINDEXL=0x1b3
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_APPENDPHRASEINDEXL=0x1b5
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_APPENDSHAREDFORMATSL=0x1b4
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_APPLYCHARFORMATL=0x1a9
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_APPLYCHARFORMATROLLBACK=0x1a8
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_DBGTESTINVARIANT=0x193
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_DELETEINSERTCHARFORMAT=0x1a4
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_DELETEPARAGRAPH=0x1a1
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_DETACHFROMSTOREL=0x1ba
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_DOSPLITPHRASEL=0x1b2
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_EXTERNALIZEITEMSPRESENTINREGISTERL=0x1c1
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_EXTERNALIZEITEMSPRESENTINSTYLEREGISTERL=0x1c2
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_EXTERNALIZEPARAIXL=0x1c3
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_EXTERNALIZEREFERENCEDSTYLESL=0x1be
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_GENERATEALLPHRASELINKSL=0x1bd
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_GETCURRENTINSERTCHARFORMAT=0x1a2
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_INSERTL=0x19c
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_MARKSTYLEREGISTER=0x1c0
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_PASTEPARAIXL=0x1c4
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_SCANTOPOSITION=0x1b1
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_SHARE=0x1a6
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_SPLITPARAGRAPHATPASTEPOSL=0x19d
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_SPLITPHRASEL=0x1a5
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXTINDEX_STOREPICTURESL=0x1b9
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXT_CREATEPARSERETEXTTLSL=0x18a
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXT_DBGTESTINVARIANT=0x17b
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXT_DEACTIVATEPARSER=0x189
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXT_DOCURSOROVERTAG=0x18c
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXT_PARSETEXT=0x18b
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CRICHTEXT_UPDATEFIELDL=0x180
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CSTYLELIST_DBGTESTINVARIANT=0x1c5
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CSTYLELIST_EXTERNALIZEL=0x1c8
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CSTYLELIST_REMOVE=0x1c9
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CEDITABLETEXT_CANCELFEPINLINEEDIT=0x140
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CEDITABLETEXT_STARTFEPINLINEEDITL=0x13b
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CEDITABLETEXT_UPDATEFEPINLINETEXTL=0x13d
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CPARSERLIST_ACTIVATEAPARSERL=0x134
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CPARSERLIST_DEACTIVATEPARSER=0x136
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CPLAINTEXT_INSERTEODL=0x142
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CRICHTEXTINDEX_APPENDPHRASEINDEXL=0x1b6
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CRICHTEXTINDEX_APPLYCHARFORMATL=0x1aa
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CRICHTEXTINDEX_DBGTESTINVARIANT=0x194
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CRICHTEXTINDEX_DETACHFROMSTOREL=0x1bb
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CRICHTEXTINDEX_EXTERNALIZEREFERENCEDSTYLESL=0x1bf
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CRICHTEXTINDEX_GETCURRENTINSERTCHARFORMAT=0x1a3
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CRICHTEXTINDEX_SHARE=0x1a7
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CRICHTEXTINDEX_SPLITPARAGRAPHATPASTEPOSL=0x19e
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CRICHTEXT_DBGTESTINVARIANT=0x17c
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CRICHTEXT_DOAPPENDTAKINGSOLEPICTUREOWNERSHIPL=0x17f
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CRICHTEXT_DOCURSOROVERTAG=0x18d
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CSTYLELIST_AT=0x1c7
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP2_CPARSERLIST_DEACTIVATEPARSER=0x137
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP2_CPLAINTEXT_GETWORDINFO=0x181
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP2_CRICHTEXTINDEX_APPLYCHARFORMATL=0x1ab
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP2_CRICHTEXTINDEX_DBGTESTINVARIANT=0x195
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP2_CRICHTEXTINDEX_DETACHFROMSTOREL=0x1bc
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP2_CRICHTEXTINDEX_SPLITPARAGRAPHATPASTEPOSL=0x19f
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP2_CRICHTEXT_DBGTESTINVARIANT=0x17d
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP3_CRICHTEXTINDEX_APPLYCHARFORMATL=0x1ac
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP3_CRICHTEXTINDEX_DBGTESTINVARIANT=0x196
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP3_CRICHTEXTINDEX_INSERTL=0x1a0
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP3_CRICHTEXT_DBGTESTINVARIANT=0x17e
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP3_CSTYLELIST_AT=0x1c6
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP4_CRICHTEXTINDEX_APPLYCHARFORMATL=0x1ad
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP4_CRICHTEXTINDEX_DBGTESTINVARIANT=0x197
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP5_CRICHTEXTINDEX_APPLYCHARFORMATL=0x1ae
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP5_CRICHTEXTINDEX_DBGTESTINVARIANT=0x198
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP6_CRICHTEXTINDEX_APPLYCHARFORMATL=0x1af
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP6_CRICHTEXTINDEX_DBGTESTINVARIANT=0x199
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP7_CRICHTEXTINDEX_APPLYCHARFORMATL=0x1b0
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP7_CRICHTEXTINDEX_DBGTESTINVARIANT=0x19a
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP8_CRICHTEXTINDEX_DBGTESTINVARIANT=0x19b
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RFORMATSTREAM_COPYL=0x18f
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RFORMATSTREAM_LENGTH=0x192
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RFORMATSTREAM_PTR=0x190
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RFORMATSTREAM_READVALUE=0x191
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RPHRASEATTRIBSENTRY_ADJUSTLENGTH=0x1b8
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_RPHRASEATTRIBSENTRY_DBGTESTINVARIANT=0x1b7
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_TLINETEXTWRITER_WRITEL=0x188
+[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_TPARAGRAPHTEXTWRITER_WRITEL=0x187
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CFORMATLAYER_EXTERNALIZECHAINL=0x144
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CGLOBALTEXT_GETCHARS=0x14f
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CGLOBALTEXT_NEWL=0x14b
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CPARAFORMATLAYER_SENSEEFFECTIVEL=0x146
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CPARAFORMATLAYER_SENSEL=0x147
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CPARAFORMAT_TABSTOP=0x14a
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CPLAINTEXT_CONVERTFIELDTOTEXT=0x143
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CPLAINTEXT_COPYTOSTREAML=0x12a
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CPLAINTEXT_DOCOPYTOSTOREL=0x127
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CPLAINTEXT_DOPASTEFROMSTOREL=0x12d
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CPLAINTEXT_DOPTDELETE=0x131
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CPLAINTEXT_EXTRACT=0x138
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CPLAINTEXT_EXTRACTSELECTIVELY=0x13c
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CPLAINTEXT_GETWORDINFO=0x1b0
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CPLAINTEXT_INSERTFIELDL=0x13f
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CPLAINTEXT_INSERTL=0x12f
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CPLAINTEXT_PAGECONTAININGPOS=0x13e
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CPLAINTEXT_PARAGRAPHNUMBERFORPOS=0x1af
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CPLAINTEXT_PTINSERTL=0x130
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CPLAINTEXT_READ=0x137
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CPLAINTEXT_REMOVEFIELD=0x142
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CPLAINTEXT_SCANPARAS=0x1b3
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CPLAINTEXT_SCANWORDS=0x1b2
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CPLAINTEXT_TOPARAGRAPHSTART=0x1b1
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CPLAINTEXT_UPDATEFIELDL=0x141
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CPLAINTEXT_UPDATEPAGETABLE=0x13d
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXTINDEX_CRICHTEXTINDEX=0x150
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXTINDEX_DELETEFROMPARAGRAPH=0x154
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXTINDEX_DOPASTEFIRSTINTOPARAL=0x15f
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXTINDEX_DOPASTEINTOPARAL=0x160
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXTINDEX_DOPASTEPHRASEL=0x162
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXTINDEX_GETPARAATTRIBS=0x159
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXTINDEX_HASMARKUPDATA=0x15b
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXTINDEX_INTERNALIZEL=0x15d
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXTINDEX_NEWINSERTCHARFORMATL=0x156
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXTINDEX_PASTEPHRASEIXL=0x161
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXTINDEX_RBPASTEPARAIXL=0x165
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXTINDEX_RBPASTEPHRASEIXL=0x166
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXTINDEX_RBPASTESHAREDFORMATSL=0x164
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXTINDEX_REBALANCEINDEX=0x158
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXTINDEX_SETINSERTCHARFORMATL=0x155
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXTINDEX_SHAREDPARAATTRIBS=0x15e
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_APPLYCHARFORMATL=0x189
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_APPLYEXTENDEDCHARFORMATL=0x18c
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_APPLYPARAFORMATL=0x186
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_APPLYPARAGRAPHSTYLEL=0x18f
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_DELETEFROMPARAGRAPH=0x17f
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_DELETEL=0x17a
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_DELETEPARAGRAPH=0x17d
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_DELSETINSERTCHARFORMATL=0x183
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_DETACHFROMSTOREL=0x1aa
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_DOCOPYTOSTOREL=0x170
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_DOPASTERTFROMSTOREL=0x173
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_DROPPICTUREOWNERSHIP=0x1ae
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_GETEXTENDEDCHARFORMAT=0x1a5
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_GETPARAFORMATL=0x1a2
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_GETPARAGRAPHFORMATL=0x1a0
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_GETPICTURESIZEINTWIPS=0x19e
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_GETSPECIFICCHARFORMATLEFTRIGHT=0x1a8
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_GETSPECIFICPARAGRAPHFORMATL=0x1a1
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_GETTEXTANDEXTENDEDFORMAT=0x19d
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_INSERTL=0x176
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_NEWL=0x167
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_NOTIFYSTYLECHANGEDL=0x193
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_PARAGRAPHNUMBERFORPOS=0x181
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_PARAGRAPHSTYLE=0x194
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_PASTERICHTEXTFROMSTOREL=0x174
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_PICTUREHANDLEL=0x19f
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_PICTUREHEADER=0x1ad
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_REMOVESPECIFICCHARFORMATL=0x19a
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_REMOVESPECIFICPARAFORMATL=0x197
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_RTINSERTL=0x178
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_SETEXTENDEDINSERTCHARFORMATL=0x182
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CRICHTEXT_SETPICTUREFACTORY=0x1ac
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CSTYLELIST_AT=0x1b4
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CSTYLELIST_SETSTYLETOFOLLOW=0x1b6
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CEDITABLETEXT_COMMITFEPINLINEEDITL=0x126
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CFORMATLAYER_EXTERNALIZECHAINL=0x145
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CGLOBALTEXT_NEWL=0x14c
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CPARSERLIST_PANIC=0x125
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CPLAINTEXT_COPYTOSTREAML=0x12b
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CPLAINTEXT_DOCOPYTOSTOREL=0x128
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CPLAINTEXT_DOPTDELETE=0x132
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CPLAINTEXT_EXTRACT=0x139
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CPLAINTEXT_IMPORTTEXTFILEL=0x134
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CPLAINTEXT_INSERTFIELDL=0x140
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CPLAINTEXT_PASTEFROMSTREAML=0x12e
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CPLAINTEXT_READ=0x136
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CRICHTEXTINDEX_CRICHTEXTINDEX=0x151
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CRICHTEXTINDEX_INSERTL=0x152
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CRICHTEXTINDEX_NEWINSERTCHARFORMATL=0x157
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CRICHTEXTINDEX_SPLITPHRASEL=0x15a
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CRICHTEXT_APPLYCHARFORMATL=0x18a
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CRICHTEXT_APPLYEXTENDEDCHARFORMATL=0x18d
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CRICHTEXT_APPLYPARAFORMATL=0x187
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CRICHTEXT_APPLYPARAGRAPHSTYLEL=0x190
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CRICHTEXT_DELETEFROMPARAGRAPH=0x180
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CRICHTEXT_DELETEL=0x17b
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CRICHTEXT_DELETEPARAGRAPH=0x17e
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CRICHTEXT_DELSETINSERTCHARFORMATL=0x184
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CRICHTEXT_DETACHFROMSTOREL=0x1a9
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CRICHTEXT_DOCOPYTOSTOREL=0x171
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CRICHTEXT_GETEXTENDEDCHARFORMAT=0x1a6
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CRICHTEXT_GETPARAFORMATL=0x1a3
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CRICHTEXT_INSERTL=0x177
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CRICHTEXT_NEWL=0x168
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CRICHTEXT_PARAGRAPHSTYLE=0x195
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CRICHTEXT_PASTERICHTEXTFROMSTOREL=0x175
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CRICHTEXT_REMOVESPECIFICCHARFORMATL=0x19b
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_CRICHTEXT_REMOVESPECIFICPARAFORMATL=0x198
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP1_RFORMATSTREAM_MERGETABLISTS=0x149
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CGLOBALTEXT_NEWL=0x14d
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CPLAINTEXT_COPYTOSTREAML=0x12c
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CPLAINTEXT_DOCOPYTOSTOREL=0x129
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CPLAINTEXT_DOPTDELETE=0x133
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CPLAINTEXT_EXPORTASTEXTL=0x135
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CPLAINTEXT_EXTRACT=0x13a
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CRICHTEXTINDEX_DOPASTEPHRASEL=0x163
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CRICHTEXTINDEX_INSERTL=0x153
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CRICHTEXT_APPLYCHARFORMATL=0x18b
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CRICHTEXT_APPLYEXTENDEDCHARFORMATL=0x18e
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CRICHTEXT_APPLYPARAFORMATL=0x188
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CRICHTEXT_APPLYPARAGRAPHSTYLEL=0x191
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CRICHTEXT_DELETEL=0x17c
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CRICHTEXT_DELSETINSERTCHARFORMATL=0x185
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CRICHTEXT_DETACHFROMSTOREL=0x1ab
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CRICHTEXT_DOCOPYTOSTOREL=0x172
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CRICHTEXT_GETEXTENDEDCHARFORMAT=0x1a7
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CRICHTEXT_GETPARAFORMATL=0x1a4
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CRICHTEXT_INSERTL=0x179
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CRICHTEXT_NEWL=0x169
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CRICHTEXT_PARAGRAPHSTYLE=0x196
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CRICHTEXT_REMOVESPECIFICCHARFORMATL=0x19c
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CRICHTEXT_REMOVESPECIFICPARAFORMATL=0x199
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP2_CSTYLELIST_AT=0x1b5
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP3_CGLOBALTEXT_NEWL=0x14e
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP3_CPLAINTEXT_EXTRACT=0x13b
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP3_CRICHTEXTINDEX_DETACHFROMSTOREL=0x15c
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP3_CRICHTEXT_APPLYPARAGRAPHSTYLEL=0x192
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP3_CRICHTEXT_NEWL=0x16a
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP4_CRICHTEXT_NEWL=0x16b
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP5_CRICHTEXT_NEWL=0x16c
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP6_CRICHTEXT_NEWL=0x16d
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP7_CRICHTEXT_NEWL=0x16e
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_DUP8_CRICHTEXT_NEWL=0x16f
+[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_RFORMATSTREAM_MERGETABLISTS=0x148
--- a/textrendering/texthandling/ttext/TEtextDefect.mmp	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/texthandling/ttext/TEtextDefect.mmp	Tue Jul 06 16:23:19 2010 +0300
@@ -18,10 +18,12 @@
 
 target		tetextdefect.exe
 targettype		EXE
+UID 0x100039CE 0xE0008383
+VENDORID 0x70000001
 
 userinclude		../ttext
 userinclude		../stext
-userinclude		../inc
+userinclude		../inc ../traces
 MW_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 SOURCEPATH		../ttext	
@@ -31,6 +33,5 @@
 source		TxtWriter.cpp
 
 library		euser.lib estor.lib efsrv.lib charconv.lib gdi.lib etext.lib tins.lib
-VENDORID		0x70000001
 
-SMPSAFE
\ No newline at end of file
+SMPSAFE
--- a/textrendering/texthandling/ttext/T_FMT1.mmp	Fri Jun 11 15:33:54 2010 +0300
+++ b/textrendering/texthandling/ttext/T_FMT1.mmp	Tue Jul 06 16:23:19 2010 +0300
@@ -21,14 +21,15 @@
 
 target          t_fmt1.exe
 targettype      EXE
+UID 0x100039CE 0xE0008383
+VENDORID 0x70000001
 
 userinclude	../ttext
 userinclude	../stext
-userinclude   ../inc 	// your public include directory should be here
+userinclude   ../inc ../traces	// your public include directory should be here
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 
-SOURCEPATH	../group
 
 SOURCEPATH	../ttext		// source files
 source t_fmt1.cpp 
@@ -45,6 +46,4 @@
 
 library euser.lib estor.lib gdi.lib
 
-VENDORID 0x70000001
-
-SMPSAFE
\ No newline at end of file
+SMPSAFE