diff -r f902e87c146f -r 748ec5531811 charconvfw/charconvplugins/src/shared/JISBASE_SHARED_2.CPP --- a/charconvfw/charconvplugins/src/shared/JISBASE_SHARED_2.CPP Wed Jun 09 11:40:52 2010 +0300 +++ b/charconvfw/charconvplugins/src/shared/JISBASE_SHARED_2.CPP Tue Aug 31 17:01:26 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 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 arrayOfStates(states.Array()); aUnicode.SetLength(0); const TUint8* const pointerToFirstByte=aForeign.Ptr(); @@ -313,6 +316,7 @@ const TInt returnValue=(*appendConvertToUnicode)(aDefaultEndiannessOfForeignCharacters, aUnicode, runToConvert, aState, numberOfUnconvertibleCharacters, indexOfFirstByteOfFirstUnconvertibleCharacter, arrayOfStates, outputConversionFlags, inputConversionFlags); if (returnValue<0) { + states.Close(); return returnValue; // this is an error-code } if (numberOfUnconvertibleCharacters>0)