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]

Reply via email to