Author: amassari
Date: Tue Jun 21 13:32:03 2011
New Revision: 1138002
URL: http://svn.apache.org/viewvc?rev=1138002&view=rev
Log:
Fixed infinite loop (XERCESC-1967)
Modified:
xerces/c/trunk/src/xercesc/util/NetAccessors/BinHTTPInputStreamCommon.cpp
Modified:
xerces/c/trunk/src/xercesc/util/NetAccessors/BinHTTPInputStreamCommon.cpp
URL:
http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/util/NetAccessors/BinHTTPInputStreamCommon.cpp?rev=1138002&r1=1138001&r2=1138002&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/util/NetAccessors/BinHTTPInputStreamCommon.cpp
(original)
+++ xerces/c/trunk/src/xercesc/util/NetAccessors/BinHTTPInputStreamCommon.cpp
Tue Jun 21 13:32:03 2011
@@ -309,22 +309,20 @@ const XMLCh *BinHTTPInputStreamCommon::g
// text/xml,
text/xml-external-parsed-entity, or a subtype like text/AnythingAtAll+xml
// has a default encoding of us-ascii
XMLCh* subType =
strType+XMLString::stringLen(szTextSlash);
- XMLCh* cursor=subType;
- int plusPos;
- do
+
+ BaseRefVectorOf<XMLCh>*
tokens=XMLString::tokenizeString(subType, chPlus, fMemoryManager);
+ for(XMLSize_t i=0;i<tokens->size();i++)
{
-
plusPos=XMLString::indexOf(cursor, chPlus);
- if(plusPos!=-1)
- *(cursor+plusPos)=0;
-
if(XMLString::compareIStringASCII(cursor, szXml)==0 ||
XMLString::startsWithI(cursor, szXmlDash))
+ XMLCh*
part=tokens->elementAt(i);
+
if(XMLString::compareIStringASCII(part, szXml)==0 ||
XMLString::startsWithI(part, szXmlDash))
{
const_cast<BinHTTPInputStreamCommon*>(this)->fEncoding =
XMLString::replicate(XMLUni::fgUSASCIIEncodingString, fMemoryManager);
break;
}
- cursor+=plusPos+1;
- } while(plusPos==-1);
+ }
if(fEncoding==0)
const_cast<BinHTTPInputStreamCommon*>(this)->fEncoding =
XMLString::replicate(XMLUni::fgISO88591EncodingString, fMemoryManager);
+ delete tokens;
}
}
delete tokens;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]