You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by am...@apache.org on 2008/03/11 09:48:07 UTC

svn commit: r635852 - /xerces/c/trunk/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp

Author: amassari
Date: Tue Mar 11 01:48:06 2008
New Revision: 635852

URL: http://svn.apache.org/viewvc?rev=635852&view=rev
Log:
Add UTF16-LE and UTF16-BE to the list of encodings tested by GNUiconv (XERCESC-1663)

Modified:
    xerces/c/trunk/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp

Modified: xerces/c/trunk/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp?rev=635852&r1=635851&r2=635852&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp (original)
+++ xerces/c/trunk/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp Tue Mar 11 01:48:06 2008
@@ -52,9 +52,12 @@
 } 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 @@
 // ---------------------------------------------------------------------------
 //  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 @@
       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 @@
 void IconvGNUTransService::upperCase(XMLCh* const toUpperCase)
 {
     XMLCh* outPtr = toUpperCase;
+
+    XMLMutexLock lockConverter(&fMutex);
+
     while (*outPtr)
     {
         *outPtr = toUpper(*outPtr);
@@ -714,10 +720,10 @@
         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 @@
         return true;
     }
 
-    unsigned int  wLent = getWideCharLength(toTranscode);
+    XMLSize_t wLent = getWideCharLength(toTranscode);
     if (wLent > maxBytes)
         wLent = maxBytes;
 
@@ -827,7 +833,7 @@
         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 @@
         return true;
     }
 
-    size_t wLent = calcRequiredSize(toTranscode);
+    XMLSize_t wLent = calcRequiredSize(toTranscode);
     if (wLent > maxChars)
         wLent = maxChars;
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org