Updated the SIS package, there was some BC issue with the earlier version. Also updated the platform UID to S^3 version.
/** Copyright (c) 2008 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: Utility for string operations in UpnpXmlParser component**/// INCLUDE FILES#include <e32base.h>#include "upnpxmlstringutility.h"_LIT( KComponentLogfile, "upnpxmlstringutility.txt" );#include "upnplog.h"// CONSTANTS/** * Range of control characters taken from http: * //www.w3.org/International/questions/qa-controls. * Remove characters that belong to "C0" range U+0000-U+001F * (0-31) and also DEL (Delete) U+007F (127). C1 range U+0080-U+009F * (128-159) is ignored for now because it seems to contain ok * characters like € (euro sign). * */const TInt KC0RangeStart = 0;const TInt KC0RangeEnd = 31;const TInt KDeleteChar = 127;// All control characters start with &#_LIT8( KXmlControlCharStart, "&#" );// All xml entities end with ; because they are of for &entityname;_LIT8( KXmlEntityEnd, ";" );// ============================ LOCAL FUNCTIONS =============================// --------------------------------------------------------------------------// UpnpXmlStringUtility::RemoveXmlControlCharactersL//---------------------------------------------------------------------------EXPORT_C HBufC8* UpnpXmlStringUtility::RemoveXmlControlCharactersL( const TDesC8& aXmlData ) { __LOG( "UpnpXmlStringUtility::RemoveXmlControlCharactersL Begin" ); HBufC8* filtrateBuf = NULL; //if no data if ( aXmlData.Length() != 0 ) { //The offset of the KXmlControlCharStart from the beginning of \ this descriptor's data TInt controlCharStartOffset = aXmlData.Find( KXmlControlCharStart ); // to make sure the data contain control character. if ( controlCharStartOffset != KErrNotFound ) { filtrateBuf = aXmlData.AllocL(); CleanupStack::PushL( filtrateBuf ); //The offset of the KXmlEntityEnd from the beginning of this \ descriptor's data TInt controlCharEndOffset = 0; //The offset of the buffer who not be checked TInt partofBufferOffset = 0; //circle find control character. while( controlCharStartOffset != KErrNotFound ) { controlCharStartOffset += partofBufferOffset; partofBufferOffset = controlCharStartOffset; controlCharEndOffset = ( filtrateBuf->Des(). Mid( controlCharStartOffset ).Find( KXmlEntityEnd ) ); if ( controlCharEndOffset != KErrNotFound ) { TLex8 tempLex( filtrateBuf->Des().Mid( partofBufferOffset + KXmlControlCharStart().Length() ,controlCharEndOffset - KXmlControlCharStart().Length() ) ); //Parses the string to extract a signed 8-bit integer. TInt tempNum; User::LeaveIfError( tempLex.Val( tempNum ) ); if( ( tempNum >= KC0RangeStart && tempNum <= KC0RangeEnd ) || ( tempNum == KDeleteChar ) ) { __LOG( "UpnpXmlStringUtility::\RemoveXmlControlCharactersL delete control character" ); TPtrC8 tmpBuf = filtrateBuf->Des().Mid( partofBufferOffset, controlCharEndOffset + KXmlEntityEnd().Length() ); __LOG8( tmpBuf); filtrateBuf->Des().Delete( partofBufferOffset, controlCharEndOffset + KXmlEntityEnd().Length() ); } else { __LOG1( "UpnpXmlStringUtility::\RemoveXmlControlCharactersL between &# and; the Number is %d",tempNum ); } controlCharStartOffset = partofBufferOffset; controlCharStartOffset = ( filtrateBuf->Des(). Mid( controlCharStartOffset ). Find( KXmlControlCharStart ) ); } else { __LOG( "UpnpXmlStringUtility::RemoveXmlControlCharactersL\ Can not find EntityEnd" ); User::Leave( KErrArgument ); } } CleanupStack::Pop( filtrateBuf ); } else { // not contains control character. __LOG( "UpnpXmlStringUtility::RemoveXmlControlCharactersL Can \ not find control character!" ); } } else { //xml data is NULL __LOG( "UpnpXmlStringUtility::RemoveXmlControlCharactersL the \ xml data is NULL" ); } __LOG( "UpnpXmlStringUtility::RemoveXmlControlCharactersL End" ); return filtrateBuf; }