cargilld 2004/12/13 08:34:00 Modified: c/src/xercesc/util XMLUTF8Transcoder.cpp Log: Performance improvement from Christian Will. Revision Changes Path 1.11 +13 -4 xml-xerces/c/src/xercesc/util/XMLUTF8Transcoder.cpp Index: XMLUTF8Transcoder.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLUTF8Transcoder.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- XMLUTF8Transcoder.cpp 8 Sep 2004 13:56:24 -0000 1.10 +++ XMLUTF8Transcoder.cpp 13 Dec 2004 16:34:00 -0000 1.11 @@ -149,9 +149,18 @@ // Special-case ASCII, which is a leading byte value of <= 127 if (*srcPtr <= 127) { - *outPtr++ = XMLCh(*srcPtr++); - *sizePtr++ = 1; - continue; + // Handle ASCII in groups instead of single character at a time. + const XMLByte* srcPtr_save = srcPtr; + do + { + *outPtr++ = XMLCh(*srcPtr++); + } while (*srcPtr <= 127 && + srcPtr != srcEnd && + outPtr != outEnd ); + memset(sizePtr,1,srcPtr - srcPtr_save); + sizePtr += srcPtr - srcPtr_save; + if (srcPtr == srcEnd || outPtr == outEnd) + break; } // See how many trailing src bytes this sequence is going to require
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]