Resynchronize the Shift_JIS converter after unrecognized sequences. Bug 690225, r=emk

This commit is contained in:
Simon Montagu 2011-10-18 14:15:21 +02:00
parent 26f43d1be2
commit 510fd7cf24

View File

@ -169,7 +169,14 @@ NS_IMETHODIMP nsShiftJISToUnicode::Convert(
case 1: // Index to table case 1: // Index to table
{ {
PRUint8 off = sbIdx[*src]; PRUint8 off = sbIdx[*src];
// Error handling: in the case where the second octet is not in the
// valid ranges 0x40-0x7E 0x80-0xFC, unconsume the invalid octet and
// interpret it as the ASCII value. In the case where the second
// octet is in the valid range but there is no mapping for the
// 2-octet sequence, do not unconsume.
if(0xFF == off) { if(0xFF == off) {
src--;
if (mErrBehavior == kOnError_Signal) if (mErrBehavior == kOnError_Signal)
goto error_invalidchar; goto error_invalidchar;
*dest++ = SJIS_UNMAPPED; *dest++ = SJIS_UNMAPPED;
@ -191,7 +198,10 @@ NS_IMETHODIMP nsShiftJISToUnicode::Convert(
case 2: // EUDC case 2: // EUDC
{ {
PRUint8 off = sbIdx[*src]; PRUint8 off = sbIdx[*src];
// Error handling as in case 1
if(0xFF == off) { if(0xFF == off) {
src--;
if (mErrBehavior == kOnError_Signal) if (mErrBehavior == kOnError_Signal)
goto error_invalidchar; goto error_invalidchar;