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]