diff --git a/src/xercesc/internal/XMLReader.cpp b/src/xercesc/internal/XMLReader.cpp index e7d02674bfd908d0ce0bb87801f74fb447a868ab..45ec331109a94529b588dbbb490e9631dcc7b347 100644 --- a/src/xercesc/internal/XMLReader.cpp +++ b/src/xercesc/internal/XMLReader.cpp @@ -1130,7 +1130,7 @@ bool XMLReader::skippedString(const XMLCh* const toSkip) // dirty comparison straight to its buffer with no requirement to unget // if it fails. // - if (XMLString::compareNString(&fCharBuf[fCharIndex], toSkip, srcLen)) + if (memcmp(&fCharBuf[fCharIndex], toSkip, srcLen*sizeof(XMLCh))) return false; // @@ -1146,7 +1146,7 @@ bool XMLReader::skippedString(const XMLCh* const toSkip) if (charsLeft == 0) return false; // error situation } - if (XMLString::compareNString(&fCharBuf[fCharIndex], toSkip, charsLeft)) + if (memcmp(&fCharBuf[fCharIndex], toSkip, charsLeft*sizeof(XMLCh))) return false; fCharIndex += charsLeft; @@ -1161,7 +1161,7 @@ bool XMLReader::skippedString(const XMLCh* const toSkip) return false; // error situation if (charsLeft > remainingLen) charsLeft = remainingLen; - if (XMLString::compareNString(&fCharBuf[fCharIndex], toSkip+offset, charsLeft)) + if (memcmp(&fCharBuf[fCharIndex], toSkip+offset, charsLeft*sizeof(XMLCh))) return false; offset += charsLeft; remainingLen -= charsLeft; @@ -1215,7 +1215,7 @@ bool XMLReader::peekString(const XMLCh* const toPeek) // dirty comparison straight to its buffer with no requirement to unget // if it fails. // - if (XMLString::compareNString(&fCharBuf[fCharIndex], toPeek, srcLen)) + if (memcmp(&fCharBuf[fCharIndex], toPeek, srcLen*sizeof(XMLCh))) return false; return true; @@ -1857,8 +1857,6 @@ void XMLReader::handleEOL(XMLCh& curCh, bool inDecl) { fCurCol++; } - - return; } XERCES_CPP_NAMESPACE_END diff --git a/src/xercesc/internal/XMLReader.hpp b/src/xercesc/internal/XMLReader.hpp index 3746fe0ea08f12bbb84de26d93868920095e42d7..f2f4abcc379e159aaf1da57b7da16b644cc5f878 100644 --- a/src/xercesc/internal/XMLReader.hpp +++ b/src/xercesc/internal/XMLReader.hpp @@ -771,7 +771,7 @@ inline bool XMLReader::peekNextChar(XMLCh& chGotten) // normal char get method in regards to newline normalization, though // its not as complicated as the actual character getting method's. // - if ((chGotten == chCR || ((chGotten == chNEL || chGotten == chLineSeparator) && fNEL)) + if ((chGotten == chCR || (fNEL && (chGotten == chNEL || chGotten == chLineSeparator))) && (fSource == Source_External)) chGotten = chLF; diff --git a/src/xercesc/internal/XMLScanner.cpp b/src/xercesc/internal/XMLScanner.cpp index 6dc613cce7b7fad9602d7e48f02b9b6b2e4a0cbc..b7e451ae4ece86db679ee6d7c129c00c5d3fcc45 100644 --- a/src/xercesc/internal/XMLScanner.cpp +++ b/src/xercesc/internal/XMLScanner.cpp @@ -1946,6 +1946,11 @@ XMLScanner::XMLTokens XMLScanner::senseNextToken(unsigned int& orgReader) // in order to catch the scenario where the current entity ended at // the > of some markup. XMLCh nextCh; + + // avoid setting up the ThrowEOEJanitor if we know that we have data in the current reader + if(fReaderMgr.getCurrentReader() && fReaderMgr.getCurrentReader()->charsLeftInBuffer()>0) + nextCh = fReaderMgr.peekNextChar(); + else { ThrowEOEJanitor janMgr(&fReaderMgr, true); nextCh = fReaderMgr.peekNextChar(); diff --git a/src/xercesc/util/XMLString.hpp b/src/xercesc/util/XMLString.hpp index 7d207893e40e008ad74e1802b19d88c62283bb35..5e06cae138199e59aa63a47c6ea41534578b236c 100644 --- a/src/xercesc/util/XMLString.hpp +++ b/src/xercesc/util/XMLString.hpp @@ -16,7 +16,7 @@ */ /* - * $Id $ + * $Id$ */ #if !defined(XMLSTRING_HPP) @@ -1521,14 +1521,10 @@ inline unsigned int XMLString::hash( const XMLCh* const tohash return 0; const XMLCh* curCh = tohash; - unsigned int hashVal = (unsigned int)(*curCh); - curCh++; + unsigned int hashVal = (unsigned int)(*curCh++); while (*curCh) - { - hashVal = (hashVal * 38) + (hashVal >> 24) + (unsigned int)(*curCh); - curCh++; - } + hashVal = (hashVal * 38) + (hashVal >> 24) + (unsigned int)(*curCh++); // Divide by modulus return hashVal % hashModulus;