From 4eb067b1640b3a51473ff6773c681367bf5013e8 Mon Sep 17 00:00:00 2001 From: Alberto Massari <amassari@apache.org> Date: Wed, 4 Jan 2012 09:54:56 +0000 Subject: [PATCH] Avoid scanning the string twice (XERCESC-1854) git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@1227093 13f79535-47bb-0310-9956-ffa450edef68 --- src/xercesc/dom/impl/DOMLSSerializerImpl.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp b/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp index 8bd591dfd..6524febb8 100644 --- a/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp +++ b/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp @@ -1742,10 +1742,15 @@ bool DOMLSSerializerImpl::isNamespaceBindingActive(const XMLCh* prefix, const XM void DOMLSSerializerImpl::ensureValidString(const DOMNode* nodeToWrite, const XMLCh* string) { // XERCESC-1854: prevent illegal characters from being written - XMLSize_t count=XMLString::stringLen(string); - for(XMLSize_t i=0;i<count;i++) - if((fIsXml11 && !XMLChar1_1::isXMLChar(string[i])) || (!fIsXml11 && !XMLChar1_0::isXMLChar(string[i]))) + if(string==0) + return; + const XMLCh* cursor=string; + while(*cursor!=0) + { + if((fIsXml11 && !XMLChar1_1::isXMLChar(*cursor)) || (!fIsXml11 && !XMLChar1_0::isXMLChar(*cursor))) reportError(nodeToWrite, DOMError::DOM_SEVERITY_FATAL_ERROR, XMLDOMMsg::INVALID_CHARACTER_ERR); + cursor++; + } } XERCES_CPP_NAMESPACE_END -- GitLab