From a82a1eec7238b35d0f9a19a28bc781edcd100bb8 Mon Sep 17 00:00:00 2001 From: David Abram Cargill <cargilld@apache.org> Date: Wed, 23 Feb 2005 15:57:48 +0000 Subject: [PATCH] Copy performance change made to XMLUTF8Transcoder.cpp to the 390 version. git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@176320 13f79535-47bb-0310-9956-ffa450edef68 --- .../Uniconv390/XMLUTF8Transcoder390.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/xercesc/util/Transcoders/Uniconv390/XMLUTF8Transcoder390.cpp b/src/xercesc/util/Transcoders/Uniconv390/XMLUTF8Transcoder390.cpp index 1a4688810..2260bfbe0 100644 --- a/src/xercesc/util/Transcoders/Uniconv390/XMLUTF8Transcoder390.cpp +++ b/src/xercesc/util/Transcoders/Uniconv390/XMLUTF8Transcoder390.cpp @@ -16,6 +16,9 @@ /* * $Log$ + * Revision 1.6 2005/02/23 15:57:48 cargilld + * Copy performance change made to XMLUTF8Transcoder.cpp to the 390 version. + * * Revision 1.5 2004/09/08 13:56:46 peiyongz * Apache License Version 2.0 * @@ -226,9 +229,18 @@ XMLUTF8Transcoder390::transcodeFrom(const XMLByte* const srcData 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 -- GitLab