mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-08 06:53:45 +00:00
ICU-516 streaming conversion functions set U_BUFFER_OVERFLOW_ERROR instead of U_INDEX_OUTOFBOUNDS_ERROR
X-SVN-Rev: 2199
This commit is contained in:
parent
913d5e7d5f
commit
17df34956e
14 changed files with 84 additions and 77 deletions
|
@ -221,7 +221,7 @@ UnicodeConverter::toUnicodeString(UnicodeString& target,
|
|||
myTargetUCharsAlias - myTargetUChars);
|
||||
/*Checks for the integrity of target (UnicodeString) as it adds data to it*/
|
||||
if (target.isBogus()) err = U_MEMORY_ALLOCATION_ERROR;
|
||||
} while (err == U_INDEX_OUTOFBOUNDS_ERROR);
|
||||
} while (err == U_BUFFER_OVERFLOW_ERROR);
|
||||
|
||||
|
||||
uprv_free(myTargetUChars);
|
||||
|
|
|
@ -833,7 +833,7 @@ scsu_compress(UnicodeCompressor *comp,
|
|||
*source = unicharBuffer;
|
||||
|
||||
if(unicharBuffer < sourceLimit)
|
||||
*status = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*status = U_BUFFER_OVERFLOW_ERROR;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1226,7 +1226,7 @@ scsu_decompress(UnicodeCompressor *comp,
|
|||
*source = byteBuffer;
|
||||
|
||||
if(byteBuffer < sourceLimit)
|
||||
*status = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*status = U_BUFFER_OVERFLOW_ERROR;
|
||||
}
|
||||
|
||||
/** Reset the compressor to its initial state. */
|
||||
|
|
|
@ -770,7 +770,7 @@ U_CFUNC void T_UConverter_toUnicode_EBCDIC_STATEFUL (UConverterToUnicodeArgs *ar
|
|||
}
|
||||
else
|
||||
{
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -908,7 +908,7 @@ U_CFUNC void T_UConverter_toUnicode_EBCDIC_STATEFUL_OFFSETS_LOGIC (UConverterToU
|
|||
}
|
||||
else
|
||||
{
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -973,7 +973,7 @@ U_CFUNC void T_UConverter_fromUnicode_EBCDIC_STATEFUL (UConverterFromUnicodeArgs
|
|||
if ((!isTargetUCharDBCS)&&(myTargetIndex+1 >= targetLength))
|
||||
{
|
||||
args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] = (char) targetUniChar;
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
else if (myTargetIndex+1 >= targetLength)
|
||||
|
@ -981,7 +981,7 @@ U_CFUNC void T_UConverter_fromUnicode_EBCDIC_STATEFUL (UConverterFromUnicodeArgs
|
|||
args->converter->charErrorBuffer[0] = (char) (targetUniChar >> 8);
|
||||
args->converter->charErrorBuffer[1] = (char) targetUniChar & 0x00FF;
|
||||
args->converter->charErrorBufferLength = 2;
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1002,7 +1002,7 @@ U_CFUNC void T_UConverter_fromUnicode_EBCDIC_STATEFUL (UConverterFromUnicodeArgs
|
|||
{
|
||||
args->converter->charErrorBuffer[0] = (char) targetUniChar;
|
||||
args->converter->charErrorBufferLength = 1;
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1038,7 +1038,7 @@ U_CFUNC void T_UConverter_fromUnicode_EBCDIC_STATEFUL (UConverterFromUnicodeArgs
|
|||
}
|
||||
else
|
||||
{
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1095,7 +1095,7 @@ U_CFUNC void T_UConverter_fromUnicode_EBCDIC_STATEFUL_OFFSETS_LOGIC (UConverterF
|
|||
{
|
||||
args->converter->charErrorBuffer[0] = (char) targetUniChar;
|
||||
args->converter->charErrorBufferLength = 1;
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
else if (myTargetIndex+1 >= targetLength)
|
||||
|
@ -1103,7 +1103,7 @@ U_CFUNC void T_UConverter_fromUnicode_EBCDIC_STATEFUL_OFFSETS_LOGIC (UConverterF
|
|||
args->converter->charErrorBuffer[0] = (char) (targetUniChar >> 8);
|
||||
args->converter->charErrorBuffer[1] = (char) targetUniChar & 0x00FF;
|
||||
args->converter->charErrorBufferLength = 2;
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1126,7 +1126,7 @@ U_CFUNC void T_UConverter_fromUnicode_EBCDIC_STATEFUL_OFFSETS_LOGIC (UConverterF
|
|||
{
|
||||
args->converter->charErrorBuffer[0] = (char) targetUniChar;
|
||||
args->converter->charErrorBufferLength = 1;
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1165,7 +1165,7 @@ U_CFUNC void T_UConverter_fromUnicode_EBCDIC_STATEFUL_OFFSETS_LOGIC (UConverterF
|
|||
}
|
||||
else
|
||||
{
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1264,7 +1264,7 @@ U_CFUNC UChar32 T_UConverter_getNextUChar_EBCDIC_STATEFUL(UConverterToUnicodeArg
|
|||
err);
|
||||
|
||||
/*makes the internal caching transparent to the user*/
|
||||
if (*err == U_INDEX_OUTOFBOUNDS_ERROR) *err = U_ZERO_ERROR;
|
||||
if (*err == U_BUFFER_OVERFLOW_ERROR) *err = U_ZERO_ERROR;
|
||||
|
||||
return myUChar;
|
||||
}
|
||||
|
|
|
@ -74,7 +74,7 @@ void ucnv_cbFromUWriteBytes (UConverterFromUnicodeArgs *args,
|
|||
toerr * sizeof(source[0]));
|
||||
args->converter->charErrorBufferLength += toerr;
|
||||
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -127,7 +127,7 @@ void ucnv_cbFromUWriteUChars(UConverterFromUnicodeArgs *args,
|
|||
/* Note, if you did something like used a Stop subcallback, things would get interesting.
|
||||
In fact, here's where we want to return the partially consumed in-source!
|
||||
*/
|
||||
if(*err == U_INDEX_OUTOFBOUNDS_ERROR)
|
||||
if(*err == U_BUFFER_OVERFLOW_ERROR)
|
||||
/* && (*source < sourceLimit && args->target >= args->targetLimit)
|
||||
-- S. Hrcek */
|
||||
{
|
||||
|
@ -175,7 +175,7 @@ void ucnv_cbFromUWriteUChars(UConverterFromUnicodeArgs *args,
|
|||
args->converter->charErrorBufferLength = (int8_t)(
|
||||
newTarget - (char*)args->converter->charErrorBuffer);
|
||||
|
||||
if((newTarget >= newTargetLimit) || (err2 == U_INDEX_OUTOFBOUNDS_ERROR))
|
||||
if((newTarget >= newTargetLimit) || (err2 == U_BUFFER_OVERFLOW_ERROR))
|
||||
{
|
||||
/* now we're REALLY in trouble.
|
||||
Internal program error - callback oughtn't to have written this much
|
||||
|
@ -188,7 +188,7 @@ void ucnv_cbFromUWriteUChars(UConverterFromUnicodeArgs *args,
|
|||
{
|
||||
/* sub errs could be invalid/truncated/illegal chars or w/e.
|
||||
These might want to be passed on up.. But the problem is, we already
|
||||
need to pass U_INDEXOUTOFBOUNDS_ERROR. That has to override these
|
||||
need to pass U_BUFFER_OVERFLOW_ERROR. That has to override these
|
||||
other errs.. */
|
||||
|
||||
/*
|
||||
|
@ -294,7 +294,7 @@ void ucnv_cbToUWriteUChars (UConverterToUnicodeArgs *args,
|
|||
toerr * sizeof(source[0]));
|
||||
args->converter->UCharErrorBufferLength += toerr;
|
||||
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -64,7 +64,7 @@ void flushInternalUnicodeBuffer (UConverter * _this,
|
|||
sizeof (UChar) * (myUCharErrorBufferLength - targetLength));
|
||||
_this->UCharErrorBufferLength -= (int8_t) targetLength;
|
||||
*myTargetIndex = targetLength;
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
}
|
||||
|
||||
return;
|
||||
|
@ -110,7 +110,7 @@ void flushInternalCharBuffer (UConverter * _this,
|
|||
(myCharErrorBufferLength - targetLength));
|
||||
_this->charErrorBufferLength -= (int8_t) targetLength;
|
||||
*myTargetIndex = targetLength;
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
}
|
||||
|
||||
return;
|
||||
|
|
|
@ -782,7 +782,7 @@ _LMBCSFromUnicode(UConverterFromUnicodeArgs* args,
|
|||
{
|
||||
if (args->target >= args->targetLimit)
|
||||
{
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
uniChar = *(args->source);
|
||||
|
@ -928,7 +928,7 @@ _LMBCSFromUnicode(UConverterFromUnicodeArgs* args,
|
|||
enough target room
|
||||
*/
|
||||
uint8_t * pErrorBuffer = args->converter->charErrorBuffer;
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
args->converter->charErrorBufferLength = (int8_t)bytes_written;
|
||||
while (bytes_written--)
|
||||
{
|
||||
|
@ -1189,7 +1189,7 @@ _LMBCSToUnicodeWithOffsets(UConverterToUnicodeArgs* args,
|
|||
|
||||
if (args->targetLimit == args->target) /* error check may belong in common code */
|
||||
{
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1262,10 +1262,10 @@ _LMBCSToUnicodeWithOffsets(UConverterToUnicodeArgs* args,
|
|||
}
|
||||
}
|
||||
}
|
||||
/* if target ran out before source, return U_INDEX_OUTOFBOUNDS_ERROR */
|
||||
/* if target ran out before source, return U_BUFFER_OVERFLOW_ERROR */
|
||||
if (U_SUCCESS(*err) && args->sourceLimit > args->source && args->targetLimit <= args->target)
|
||||
{
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
}
|
||||
|
||||
/* If character incomplete, store away partial char if more to come */
|
||||
|
|
|
@ -218,7 +218,7 @@ morebytes:
|
|||
/* Put in overflow buffer (not handled here) */
|
||||
args->converter->UCharErrorBuffer[0] = (UChar) ch;
|
||||
args->converter->UCharErrorBufferLength = 1;
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -249,7 +249,7 @@ morebytes:
|
|||
/* Put in overflow buffer (not handled here) */
|
||||
args->converter->UCharErrorBuffer[0] = (UChar) ch2;
|
||||
args->converter->UCharErrorBufferLength = 1;
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -261,7 +261,7 @@ donefornow:
|
|||
if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err))
|
||||
{
|
||||
/* End of target buffer */
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
}
|
||||
|
||||
args->target = myTarget;
|
||||
|
@ -370,7 +370,7 @@ morebytes:
|
|||
{
|
||||
args->converter->UCharErrorBuffer[0] = (UChar) ch;
|
||||
args->converter->UCharErrorBufferLength = 1;
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
}
|
||||
}
|
||||
offsetNum += i;
|
||||
|
@ -417,7 +417,7 @@ morebytes:
|
|||
/* Put in overflow buffer (not handled here) */
|
||||
args->converter->UCharErrorBuffer[0] = (UChar) ch2;
|
||||
args->converter->UCharErrorBufferLength = 1;
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -428,7 +428,7 @@ morebytes:
|
|||
donefornow:
|
||||
if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err))
|
||||
{ /* End of target buffer */
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
}
|
||||
|
||||
args->target = myTarget;
|
||||
|
@ -473,7 +473,7 @@ U_CFUNC void T_UConverter_fromUnicode_UTF8 (UConverterFromUnicodeArgs * args,
|
|||
{
|
||||
args->converter->charErrorBuffer[0] = (char) ((ch & 0x3f) | 0x80);
|
||||
args->converter->charErrorBufferLength = 1;
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -522,7 +522,7 @@ lowsurogate:
|
|||
else
|
||||
{
|
||||
args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] = temp[indexToWrite];
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -530,7 +530,7 @@ lowsurogate:
|
|||
|
||||
if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err))
|
||||
{
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
}
|
||||
|
||||
args->target = (char *) myTarget;
|
||||
|
@ -579,7 +579,7 @@ U_CFUNC void T_UConverter_fromUnicode_UTF8_OFFSETS_LOGIC (UConverterFromUnicodeA
|
|||
{
|
||||
args->converter->charErrorBuffer[0] = (char) ((ch & 0x3f) | 0x80);
|
||||
args->converter->charErrorBufferLength = 1;
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -629,7 +629,7 @@ lowsurogate:
|
|||
else
|
||||
{
|
||||
args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] = temp[indexToWrite];
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
}
|
||||
}
|
||||
offsetNum += (ch >= 0x10000) + 1;
|
||||
|
@ -638,7 +638,7 @@ lowsurogate:
|
|||
|
||||
if (mySource < sourceLimit && myTarget >= targetLimit && U_SUCCESS(*err))
|
||||
{
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
}
|
||||
|
||||
args->target = (char *) myTarget;
|
||||
|
@ -749,7 +749,7 @@ CALL_ERROR_FUNCTION:
|
|||
err);
|
||||
|
||||
/*makes the internal caching transparent to the user*/
|
||||
if (*err == U_INDEX_OUTOFBOUNDS_ERROR)
|
||||
if (*err == U_BUFFER_OVERFLOW_ERROR)
|
||||
*err = U_ZERO_ERROR;
|
||||
|
||||
return (UChar32)myUChar;
|
||||
|
@ -827,7 +827,7 @@ U_CFUNC void T_UConverter_toUnicode_UTF16_BE (UConverterToUnicodeArgs * args,
|
|||
}
|
||||
else
|
||||
{
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -873,12 +873,12 @@ U_CFUNC void T_UConverter_fromUnicode_UTF16_BE (UConverterFromUnicodeArgs * arg
|
|||
{
|
||||
args->converter->charErrorBuffer[0] = (char) mySourceChar;
|
||||
args->converter->charErrorBufferLength = 1;
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1009,7 +1009,7 @@ U_CFUNC void T_UConverter_toUnicode_UTF16_LE (UConverterToUnicodeArgs * args,
|
|||
}
|
||||
else
|
||||
{
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1056,12 +1056,12 @@ U_CFUNC void T_UConverter_fromUnicode_UTF16_LE (UConverterFromUnicodeArgs * ar
|
|||
{
|
||||
args->converter->charErrorBuffer[0] = (char) (mySourceChar >> 8);
|
||||
args->converter->charErrorBufferLength = 1;
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -43,7 +43,7 @@ U_CFUNC void T_UConverter_toUnicode_LATIN_1 (UConverterToUnicodeArgs * args,
|
|||
if ((args->targetLimit - args->target) < sourceLength)
|
||||
{
|
||||
readLen = args->targetLimit - args->target;
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -144,7 +144,7 @@ U_CFUNC void T_UConverter_fromUnicode_LATIN_1 (UConverterFromUnicodeArgs * arg
|
|||
}
|
||||
else
|
||||
{
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -372,7 +372,7 @@ _MBCSToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
|
|||
/* target overflow */
|
||||
cnv->UCharErrorBuffer[0]=c;
|
||||
cnv->UCharErrorBufferLength=1;
|
||||
*pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*pErrorCode=U_BUFFER_OVERFLOW_ERROR;
|
||||
|
||||
offset=0;
|
||||
byteIndex=0;
|
||||
|
@ -424,7 +424,7 @@ _MBCSToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
|
|||
/* target overflow */
|
||||
cnv->UCharErrorBuffer[0]=unicodeCodeUnits[offset];
|
||||
cnv->UCharErrorBufferLength=1;
|
||||
*pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*pErrorCode=U_BUFFER_OVERFLOW_ERROR;
|
||||
|
||||
offset=0;
|
||||
byteIndex=0;
|
||||
|
@ -517,7 +517,7 @@ output32:
|
|||
/* target overflow */
|
||||
cnv->UCharErrorBuffer[0]=c;
|
||||
cnv->UCharErrorBufferLength=1;
|
||||
*pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*pErrorCode=U_BUFFER_OVERFLOW_ERROR;
|
||||
|
||||
offset=0;
|
||||
byteIndex=0;
|
||||
|
@ -596,7 +596,7 @@ callback:
|
|||
*/
|
||||
if(cnv->UCharErrorBufferLength>0) {
|
||||
/* target is full */
|
||||
*pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*pErrorCode=U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -608,7 +608,7 @@ callback:
|
|||
}
|
||||
} else {
|
||||
/* target is full */
|
||||
*pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*pErrorCode=U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -663,10 +663,10 @@ _MBCSGetNextUChar(UConverterToUnicodeArgs *pArgs,
|
|||
pArgs->sourceLimit=pArgs->source+1;
|
||||
pArgs->flush= (UBool)(pArgs->sourceLimit==realLimit);
|
||||
_MBCSToUnicode(pArgs, pErrorCode);
|
||||
if(U_FAILURE(*pErrorCode) && *pErrorCode!=U_INDEX_OUTOFBOUNDS_ERROR) {
|
||||
if(U_FAILURE(*pErrorCode) && *pErrorCode!=U_BUFFER_OVERFLOW_ERROR) {
|
||||
return 0xffff;
|
||||
} else if(pArgs->target!=buffer) {
|
||||
if(*pErrorCode==U_INDEX_OUTOFBOUNDS_ERROR) {
|
||||
if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR) {
|
||||
*pErrorCode=U_ZERO_ERROR;
|
||||
}
|
||||
return ucnv_getUChar32KeepOverflow(pArgs->converter, buffer, pArgs->target-buffer);
|
||||
|
@ -1143,7 +1143,7 @@ getTrail:
|
|||
|
||||
/* target overflow */
|
||||
targetCapacity=0;
|
||||
*pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*pErrorCode=U_BUFFER_OVERFLOW_ERROR;
|
||||
c=0;
|
||||
break;
|
||||
}
|
||||
|
@ -1217,7 +1217,7 @@ callback:
|
|||
*/
|
||||
if(cnv->charErrorBufferLength>0) {
|
||||
/* target is full */
|
||||
*pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*pErrorCode=U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1228,7 +1228,7 @@ callback:
|
|||
*/
|
||||
} else {
|
||||
/* target is full */
|
||||
*pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*pErrorCode=U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -141,7 +141,7 @@ U_CFUNC void T_UConverter_toUnicode_SBCS (UConverterToUnicodeArgs * args,
|
|||
}
|
||||
else
|
||||
{
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -266,7 +266,7 @@ U_CFUNC void T_UConverter_fromUnicode_SBCS (UConverterFromUnicodeArgs * args,
|
|||
}
|
||||
else
|
||||
{
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -333,7 +333,7 @@ U_CFUNC UChar32 T_UConverter_getNextUChar_SBCS(UConverterToUnicodeArgs* args,
|
|||
err);
|
||||
|
||||
/*makes the internal caching transparent to the user*/
|
||||
if (*err == U_INDEX_OUTOFBOUNDS_ERROR) *err = U_ZERO_ERROR;
|
||||
if (*err == U_BUFFER_OVERFLOW_ERROR) *err = U_ZERO_ERROR;
|
||||
|
||||
return myUChar;
|
||||
}
|
||||
|
@ -504,7 +504,7 @@ U_CFUNC void T_UConverter_toUnicode_DBCS (UConverterToUnicodeArgs * args,
|
|||
}
|
||||
else
|
||||
{
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -569,7 +569,7 @@ U_CFUNC void T_UConverter_fromUnicode_DBCS (UConverterFromUnicodeArgs * args,
|
|||
{
|
||||
args->converter->charErrorBuffer[0] = (char) targetUniChar;
|
||||
args->converter->charErrorBufferLength = 1;
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
}
|
||||
}
|
||||
else if ((args->converter->useFallback == TRUE) &&
|
||||
|
@ -589,7 +589,7 @@ U_CFUNC void T_UConverter_fromUnicode_DBCS (UConverterFromUnicodeArgs * args,
|
|||
{
|
||||
args->converter->charErrorBuffer[0] = (char) targetUniChar;
|
||||
args->converter->charErrorBufferLength = 1;
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -662,7 +662,7 @@ U_CFUNC void T_UConverter_fromUnicode_DBCS (UConverterFromUnicodeArgs * args,
|
|||
}
|
||||
else
|
||||
{
|
||||
*err = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
*err = U_BUFFER_OVERFLOW_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -744,7 +744,7 @@ U_CFUNC UChar32 T_UConverter_getNextUChar_DBCS(UConverterToUnicodeArgs* args,
|
|||
reason,
|
||||
err);
|
||||
/*makes the internal caching transparent to the user*/
|
||||
if (*err == U_INDEX_OUTOFBOUNDS_ERROR) *err = U_ZERO_ERROR;
|
||||
if (*err == U_BUFFER_OVERFLOW_ERROR) *err = U_ZERO_ERROR;
|
||||
|
||||
return myUChar;
|
||||
}
|
||||
|
|
|
@ -83,7 +83,7 @@ U_CAPI void U_EXPORT2 scsu_reset(UnicodeCompressor *comp);
|
|||
* If the source data is completely compressed, <TT>status</TT> will be set
|
||||
* to <TT>U_ZERO_ERROR</TT>.
|
||||
* If the source data is not completely compressed, <TT>status</TT> will be
|
||||
* set to <TT>U_INDEX_OUTOFBOUNDS_ERROR</TT>. If this occurs, larger buffers
|
||||
* set to <TT>U_BUFFER_OVERFLOW_ERROR</TT>. If this occurs, larger buffers
|
||||
* should be allocated, or data flushed, and the function should be called
|
||||
* again with the new buffers.
|
||||
*
|
||||
|
@ -116,7 +116,7 @@ U_CAPI void U_EXPORT2 scsu_compress(UnicodeCompressor *comp,
|
|||
* If the source data is completely compressed, <TT>status</TT> will be set
|
||||
* to <TT>U_ZERO_ERROR</TT>.
|
||||
* If the source data is not completely compressed, <TT>status</TT> will be
|
||||
* set to <TT>U_INDEX_OUTOFBOUNDS_ERROR</TT>. If this occurs, larger buffers
|
||||
* set to <TT>U_BUFFER_OVERFLOW_ERROR</TT>. If this occurs, larger buffers
|
||||
* should be allocated, or data flushed, and the function should be called
|
||||
* again with the new buffers.
|
||||
*
|
||||
|
|
|
@ -504,8 +504,9 @@ U_CAPI void U_EXPORT2
|
|||
* For output data carried across calls -1 will be placed for offsets.
|
||||
* @param flush <TT>TRUE</TT> if the buffer is the last buffer of the conversion interation
|
||||
* and the conversion will finish with this call, FALSE otherwise.
|
||||
* @param err the error status. <TT>U_ILLEGAL_ARGUMENT_ERROR</TT> will be returned if the
|
||||
* @param err the error status. <TT>U_ILLEGAL_ARGUMENT_ERROR</TT> will be set if the
|
||||
* converter is <TT>NULL</TT>.
|
||||
* <code>U_BUFFER_OVERFLOW_ERROR</code> will be set if the target is full and there is still input left in the source.
|
||||
* @see ucnv_fromUChars
|
||||
* @see ucnv_convert
|
||||
* @see ucnv_getMinCharSize
|
||||
|
@ -546,6 +547,7 @@ U_CAPI
|
|||
* in this call, FALSE otherwise.
|
||||
* @param err the error code status <TT>U_ILLEGAL_ARGUMENT_ERROR</TT> will be returned if the
|
||||
* converter is <TT>NULL</TT>, or if <TT>targetLimit</TT> and <TT>sourceLimit</TT> are misaligned.
|
||||
* <code>U_BUFFER_OVERFLOW_ERROR</code> will be set if the target is full and there is still input left in the source.
|
||||
* @see ucnv_toUChars
|
||||
* @see ucnv_getNextUChar
|
||||
* @see ucnv_convert
|
||||
|
@ -581,10 +583,8 @@ U_CAPI
|
|||
* @param sourceLength the length of the source buffer. If -1 is passed in as the value,
|
||||
* the source buffer is NULL terminated string and whole source buffer will be converted.
|
||||
* @param err the error status code.
|
||||
* <TT>U_INDEX_OUTOFBOUNDS_ERROR</TT> will be returned if the
|
||||
* the # of bytes provided are not enough for transcoding.
|
||||
* <TT>U_ILLEGAL_ARGUMENT_ERROR</TT> is returned if the converter is <TT>NULL</TT> or the source or target string is empty.
|
||||
* <TT>U_BUFFER_OVERFLOW_ERROR</TT> when <TT>targetSize</TT> turns out to be bigger than <TT>targetCapacity</TT>
|
||||
* <code>U_BUFFER_OVERFLOW_ERROR</code> will be set if the target is full and there is still input left in the source.
|
||||
* @return number of bytes needed in target, regardless of <TT>targetCapacity</TT>
|
||||
* @see ucnv_fromUnicode
|
||||
* @see ucnv_convert
|
||||
|
@ -622,7 +622,7 @@ U_CAPI
|
|||
* the internal process buffer cannot be allocated for transcoding.
|
||||
* <TT>U_ILLEGAL_ARGUMENT_ERROR</TT> is returned if the converter is <TT>NULL</TT> or
|
||||
* if the source or target string is empty.
|
||||
* <TT>U_BUFFER_OVERFLOW_ERROR</TT> when the input buffer is prematurely exhausted and targetSize non-<TT>NULL</TT>.
|
||||
* <code>U_BUFFER_OVERFLOW_ERROR</code> will be set if the target is full and there is still input left in the source.
|
||||
* @return the number of UChar needed in target (including the zero terminator)
|
||||
* @see ucnv_getNextUChar
|
||||
* @see ucnv_toUnicode
|
||||
|
@ -647,7 +647,13 @@ U_CAPI
|
|||
*the bytes consumed in the conversion call.
|
||||
*@param points to the end of the input buffer
|
||||
*@param err fills in error status (see ucnv_toUnicode)
|
||||
*@return a UChar resulting from the partial conversion of source
|
||||
* <code>U_INDEX_OUTOFBOUNDS_ERROR</code> will be set if the input is empty or does not convert
|
||||
* to any output (e.g.: pure state-change codes SI/SO, escape sequences for ISO 2022,
|
||||
* callback did not output anything, ...).
|
||||
* This function will not set a <code>U_BUFFER_OVERFLOW_ERROR</code> because the "buffer" is
|
||||
* the return code. However, there might be subsequent output stored in the converter object
|
||||
* that will be returned in following calls to this function.
|
||||
*@return a UChar32 resulting from the partial conversion of source
|
||||
*@see ucnv_toUnicode
|
||||
*@see ucnv_toUChars
|
||||
*@see ucnv_convert
|
||||
|
@ -671,6 +677,7 @@ U_CAPI
|
|||
* @param source: Pointer to the input buffer
|
||||
* @param sourceLength: on input contains the capacity of source
|
||||
* @param err: fills in an error status
|
||||
* <code>U_BUFFER_OVERFLOW_ERROR</code> will be set if the target is full and there is still input left in the source.
|
||||
* @return will be filled in with the number of bytes needed in target
|
||||
* @see ucnv_fromUnicode
|
||||
* @see ucnv_toUnicode
|
||||
|
|
|
@ -1355,7 +1355,7 @@ UnicodeString::doCodepageCreate(const char *codepageData,
|
|||
fLength = myTarget - fArray;
|
||||
|
||||
// allocate more space and copy data, if needed
|
||||
if(status == U_INDEX_OUTOFBOUNDS_ERROR) {
|
||||
if(status == U_BUFFER_OVERFLOW_ERROR) {
|
||||
// reset the error code
|
||||
status = U_ZERO_ERROR;
|
||||
|
||||
|
@ -1765,7 +1765,7 @@ operator<<(ostream& stream, const UnicodeString& s)
|
|||
if(s > buffer) {
|
||||
stream.write(buffer, s - buffer);
|
||||
}
|
||||
} while(errorCode == U_INDEX_OUTOFBOUNDS_ERROR);
|
||||
} while(errorCode == U_BUFFER_OVERFLOW_ERROR);
|
||||
UnicodeString::releaseDefaultConverter(converter);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -282,10 +282,10 @@ UChar* u_uastrncpy(UChar *ucs1,
|
|||
&err);
|
||||
ucnv_reset(cnv); /* be good citizens */
|
||||
releaseDefaultConverter(cnv);
|
||||
if(U_FAILURE(err) && (err != U_INDEX_OUTOFBOUNDS_ERROR) ) {
|
||||
if(U_FAILURE(err) && (err != U_BUFFER_OVERFLOW_ERROR) ) {
|
||||
*ucs1 = 0; /* failure */
|
||||
}
|
||||
if(target < (ucs1+n)) { /* Indexoutofbounds isn't an err, just means no termination will happen. */
|
||||
if(target < (ucs1+n)) { /* U_BUFFER_OVERFLOW_ERROR isn't an err, just means no termination will happen. */
|
||||
*target = 0; /* terminate */
|
||||
}
|
||||
} else {
|
||||
|
|
Loading…
Add table
Reference in a new issue