--- 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<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();
@@ -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)