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