You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by tn...@apache.org on 2002/07/04 20:20:18 UTC
cvs commit: xml-xerces/c/src/xercesc/util/Transcoders/IconvFBSD IconvFBSDTransService.cpp
tng 2002/07/04 11:20:18
Modified: c/src/xercesc/util/Transcoders/IconvFBSD
IconvFBSDTransService.cpp
Log:
[Bug 10253] Bugfix for the IconvFBSD transcoder. Patch from Max Gotlib.
Revision Changes Path
1.5 +14 -6 xml-xerces/c/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.cpp
Index: IconvFBSDTransService.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/Transcoders/IconvFBSD/IconvFBSDTransService.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- IconvFBSDTransService.cpp 11 Apr 2002 15:38:05 -0000 1.4
+++ IconvFBSDTransService.cpp 4 Jul 2002 18:20:18 -0000 1.5
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.5 2002/07/04 18:20:18 tng
+ * [Bug 10253] Bugfix for the IconvFBSD transcoder. Patch from Max Gotlib.
+ *
* Revision 1.4 2002/04/11 15:38:05 knoaman
* String lower case support for FreeBSD by Max Gotlib
*
@@ -105,12 +108,14 @@
static const IconvFBSDEncoding gIconvFBSDEncodings[] = {
{ "ucs-2-internal", 2, LITTLE_ENDIAN },
+ { "ucs2-internal", 2, LITTLE_ENDIAN },
{ "ucs-4-internal", 4, LITTLE_ENDIAN },
+ { "ucs4-internal", 4, LITTLE_ENDIAN },
{ "UNICODELITTLE", 2, LITTLE_ENDIAN },
{ "UNICODEBIG", 2, BIG_ENDIAN },
{ "iso-10646-ucs-2", 4, BIG_ENDIAN },
{ "iso-10646-ucs-4", 4, BIG_ENDIAN },
- { "iso-10646-utf-16", 2, BIG_ENDIAN },
+ /* { "iso-10646-utf-16", 2, BIG_ENDIAN }, */
{ NULL, 0, 0 }
};
@@ -451,6 +456,7 @@
{
if (toCheck <= 0x7F)
return isspace(toCheck);
+
char wcbuf[fUChSize * 2];
char tmpArr[4];
@@ -924,8 +930,10 @@
char *pTmpArr = tmpWideArr;
const char *ptr = srcText + srcLen - len;
size_t rc = iconvFrom(ptr, &len, &pTmpArr, gTempBuffArraySize);
- if (rc == (size_t) -1 && errno != E2BIG)
- return 0;
+ if (rc == (size_t) -1 && errno != E2BIG) {
+ ThrowXML(TranscodingException, XMLExcepts::Trans_BadSrcSeq);
+ /* return 0; */
+ }
rc = pTmpArr - (char *) tmpWideArr;
totalLen += rc;
if (rc == 0 || len == 0)
@@ -998,7 +1006,8 @@
if (rc == (size_t) -1 && errno != E2BIG) {
if (wBufPtr)
delete [] wBufPtr;
- return 0;
+ ThrowXML(TranscodingException, XMLExcepts::Trans_BadSrcSeq);
+ /* return 0; */
}
rc = pTmpArr - tmpBuff;
totalLen += rc;
@@ -1454,12 +1463,11 @@
for (size_t cnt = 0; cnt < maxChars && srcLen; cnt++) {
size_t rc = iconvFrom(startSrc, &srcLen, &orgTarget, uChSize());
if (rc == (size_t)-1) {
- if (errno != E2BIG) {
+ if (errno != E2BIG || prevSrcLen == srcLen) {
if (wBufPtr)
delete [] wBufPtr;
ThrowXML(TranscodingException, XMLExcepts::Trans_BadSrcSeq);
}
- break;
}
charSizes[cnt] = prevSrcLen - srcLen;
prevSrcLen = srcLen;
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org