diff --git a/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp b/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp index ed447ac9e69d7d8e9c06bd300c13651bf647b31c..1ba1d01dd2fb502a8211aa11fc0752a986cfd349 100644 --- a/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp +++ b/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp @@ -52,9 +52,12 @@ typedef struct __IconvGNUEncoding { } IconvGNUEncoding; static const IconvGNUEncoding gIconvGNUEncodings[] = { - { "UCS-2LE", 2, LITTLE_ENDIAN }, - { "ucs-2-internal", 2, LITTLE_ENDIAN }, - { NULL, 0, 0 } + { "UTF-16LE", 2, LITTLE_ENDIAN }, + { "UTF-16BE", 2, BIG_ENDIAN }, + { "UCS-2LE", 2, LITTLE_ENDIAN }, + { "UCS-2BE", 2, BIG_ENDIAN }, + { "UCS-2-INTERNAL", 2, BYTE_ORDER }, + { NULL, 0, 0 } }; #define MAX_UCHSIZE 4 @@ -140,12 +143,12 @@ static const XMLCh gMyServiceId[] = // --------------------------------------------------------------------------- // Local methods // --------------------------------------------------------------------------- -static unsigned int getWideCharLength(const XMLCh* const src) +static XMLSize_t getWideCharLength(const XMLCh* const src) { if (!src) return 0; - unsigned int len = 0; + XMLSize_t len = 0; const XMLCh* pTmp = src; while (*pTmp++) len++; @@ -172,7 +175,7 @@ IconvGNUWrapper::IconvGNUWrapper ( iconv_t cd_from, fCDTo(cd_to), fCDFrom(cd_from) { if (fCDFrom == (iconv_t) -1 || fCDTo == (iconv_t) -1) { - XMLPlatformUtils::panic (PanicHandler::Panic_NoTransService); + XMLPlatformUtils::panic (PanicHandler::Panic_NoTransService); } } @@ -597,6 +600,9 @@ IconvGNUTransService::makeNewXMLTranscoder void IconvGNUTransService::upperCase(XMLCh* const toUpperCase) { XMLCh* outPtr = toUpperCase; + + XMLMutexLock lockConverter(&fMutex); + while (*outPtr) { *outPtr = toUpper(*outPtr); @@ -714,10 +720,10 @@ char* IconvGNULCPTranscoder::transcode(const XMLCh* const toTranscode, return retVal; } - unsigned int wLent = getWideCharLength(toTranscode); + XMLSize_t wLent = getWideCharLength(toTranscode); // Calc needed size. - const size_t neededLen = calcRequiredSize (toTranscode, manager); + XMLSize_t neededLen = calcRequiredSize (toTranscode, manager); if (neededLen == 0) return 0; // allocate output buffer @@ -773,7 +779,7 @@ bool IconvGNULCPTranscoder::transcode( const XMLCh* const toTranscode return true; } - unsigned int wLent = getWideCharLength(toTranscode); + XMLSize_t wLent = getWideCharLength(toTranscode); if (wLent > maxBytes) wLent = maxBytes; @@ -827,7 +833,7 @@ XMLCh* IconvGNULCPTranscoder::transcode(const char* const toTranscode, return retVal; } - const XMLSize_t wLent = calcRequiredSize(toTranscode, manager); + XMLSize_t wLent = calcRequiredSize(toTranscode, manager); if (wLent == 0) { retVal = (XMLCh*) manager->allocate(sizeof(XMLCh));//new XMLCh[1]; retVal[0] = 0; @@ -889,7 +895,7 @@ bool IconvGNULCPTranscoder::transcode(const char* const toTranscode return true; } - size_t wLent = calcRequiredSize(toTranscode); + XMLSize_t wLent = calcRequiredSize(toTranscode); if (wLent > maxChars) wLent = maxChars;