Author: dbertoni
Date: Fri Jan 20 14:03:27 2006
New Revision: 370906

URL: http://svn.apache.org/viewcvs?rev=370906&view=rev
Log:
Fixes for Jira issue XERCESC-1548.

Modified:
    xerces/c/branches/xerces-2.7/src/xercesc/util/Base64.cpp
    xerces/c/branches/xerces-2.7/src/xercesc/util/HexBin.cpp

Modified: xerces/c/branches/xerces-2.7/src/xercesc/util/Base64.cpp
URL: 
http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/util/Base64.cpp?rev=370906&r1=370905&r2=370906&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/util/Base64.cpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/util/Base64.cpp Fri Jan 20 
14:03:27 2006
@@ -56,11 +56,35 @@
        chPlus, chForwardSlash, chNull
 };
 
-XMLByte Base64::base64Inverse[BASELENGTH];
+// This is an inverse table for base64 decoding.  So, if
+// base64Alphabet[17] = 'R', then base64Inverse['R'] = 17.
+//
+// For characters not in base64Alphabet then
+// base64Inverse[char] = 0xFF.
+XMLByte Base64::base64Inverse[BASELENGTH] =
+{
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF, 
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF, 
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3E, 
0xFF, 0xFF, 0xFF, 0x3F, 
+    0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF, 
+    0xFF, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 
0x0B, 0x0C, 0x0D, 0x0E, 
+    0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF, 
+    0xFF, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 
0x25, 0x26, 0x27, 0x28, 
+    0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF, 
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF, 
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF, 
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF, 
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF, 
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF, 
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF, 
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF, 
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF
+};
+
 
 const XMLByte Base64::base64Padding = chEqual;
 
-bool Base64::isInitialized = false;
+bool Base64::isInitialized = true;
 
 /***
  *
@@ -130,9 +154,6 @@
                       , unsigned int*        outputLength                      
                       , MemoryManager* const memMgr)
 {
-    if (!isInitialized)
-        init();
-
     if (!inputData || !outputLength)
         return 0;
 
@@ -474,9 +495,6 @@
                           ,       Conformance             conform
                         )
 {
-    if (!isInitialized)
-        init();
-
     if ((!inputData) || (!*inputData))
         return 0;
     
@@ -667,25 +685,10 @@
     return decodedData;
 }
 
-void Base64::init()
-{
-    if (isInitialized)
-        return;
 
-    isInitialized = true;
 
-    // create inverse table for base64 decoding
-    // if base64Alphabet[ 17 ] = 'R', then base64Inverse[ 'R' ] = 17
-    // for characters not in base64Alphabet the base64Inverse[] = -1
-
-    int i;
-    // set all fields to -1
-    for ( i = 0; i < BASELENGTH; i++ )
-        base64Inverse[i] = (XMLByte)-1;
-
-    // compute inverse table
-    for ( i = 0; i < 64; i++ )
-        base64Inverse[ base64Alphabet[i] ] = (XMLByte)i;
+void Base64::init()
+{
 }
 
 bool Base64::isData(const XMLByte& octet)

Modified: xerces/c/branches/xerces-2.7/src/xercesc/util/HexBin.cpp
URL: 
http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/util/HexBin.cpp?rev=370906&r1=370905&r2=370906&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/util/HexBin.cpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/util/HexBin.cpp Fri Jan 20 
14:03:27 2006
@@ -36,8 +36,26 @@
 // ---------------------------------------------------------------------------
 //  class data member
 // ---------------------------------------------------------------------------
-XMLByte HexBin::hexNumberTable[BASELENGTH];
-bool HexBin::isInitialized = false;
+XMLByte HexBin::hexNumberTable[BASELENGTH] =
+{
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF,
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF,
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF,
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF,
+    0xFF, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF,
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF,
+    0xFF, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF,
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF,
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF,
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF,
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF,
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF,
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF,
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF,
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF, 0xFF,
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0xFF, 0xFF, 0xFF
+};
+bool HexBin::isInitialized = true;
 
 int HexBin::getDataLength(const XMLCh* const hexData)
 {
@@ -49,9 +67,6 @@
 
 bool HexBin::isArrayByteHex(const XMLCh* const hexData)
 {
-    if ( !isInitialized )
-        init();
-
     if (( hexData == 0 ) || ( *hexData == 0 )) // zero length
         return true;
 
@@ -89,9 +104,6 @@
     if ( strLen%2 != 0 )
         return 0;
 
-    if ( !isInitialized )
-        init();
-
     //prepare the return string
     int decodeLength = strLen/2;
     XMLCh *retVal = (XMLCh*) manager->allocate( (decodeLength + 1) * 
sizeof(XMLCh));
@@ -123,9 +135,6 @@
     if ( strLen%2 != 0 )
         return 0;
 
-    if ( !isInitialized )
-        init();
-
     //prepare the return string
     int decodeLength = strLen/2;
     XMLByte *retVal = (XMLByte*) manager->allocate( (decodeLength + 1) * 
sizeof(XMLByte));
@@ -162,23 +171,6 @@
 
 void HexBin::init()
 {
-    if ( isInitialized )
-        return;
-
-    int i;
-    for ( i = 0; i < BASELENGTH; i++ )
-        hexNumberTable[i] = (XMLByte)-1;
-
-    for ( i = chDigit_9; i >= chDigit_0; i-- )
-        hexNumberTable[i] = (XMLByte) (i - chDigit_0);
-
-    for ( i = chLatin_F; i >= chLatin_A; i-- )
-        hexNumberTable[i] = (XMLByte) (i - chLatin_A + 10);
- 
-    for ( i = chLatin_f; i >= chLatin_a; i-- )
-        hexNumberTable[i] = (XMLByte) (i - chLatin_a + 10);    
-
-    isInitialized = true;
 }
 
 XERCES_CPP_NAMESPACE_END



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to