tng         2002/11/14 14:15:31

  Modified:    c/src/xercesc/util XMLString.cpp
  Log:
  [Bug 14479] XMLString::subString failure when len(source)==0
  
  Revision  Changes    Path
  1.11      +16 -21    xml-xerces/c/src/xercesc/util/XMLString.cpp
  
  Index: XMLString.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLString.cpp,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- XMLString.cpp     4 Nov 2002 15:22:05 -0000       1.10
  +++ XMLString.cpp     14 Nov 2002 22:15:31 -0000      1.11
  @@ -592,25 +592,21 @@
   void XMLString::subString(char* const targetStr, const char* const srcStr
                             , const int startIndex, const int endIndex)
   {
  -     //if (startIndex < 0 || endIndex < 0)
  -    //    ThrowXML(ArrayIndexOutOfBoundsException, XMLExcepts::Str_NegativeIndex);
  -
  -     if (targetStr == 0)
  +    if (targetStr == 0)
           ThrowXML(IllegalArgumentException, XMLExcepts::Str_ZeroSizedTargetBuf);
   
       const int srcLen = strlen(srcStr);
  -     const int copySize = endIndex - startIndex;
  +    const int copySize = endIndex - startIndex;
   
       // Make sure the start index is within the XMLString bounds
  -     if (startIndex > srcLen-1 || endIndex > srcLen )
  +    if ( startIndex < 0 || startIndex > endIndex || endIndex > srcLen)
           ThrowXML(ArrayIndexOutOfBoundsException, XMLExcepts::Str_StartIndexPastEnd);
   
  -     for (int i= startIndex; i < endIndex; i++) {
  -
  -             targetStr[i-startIndex] = srcStr[i];
  -     }
  +    for (int i= startIndex; i < endIndex; i++) {
  +        targetStr[i-startIndex] = srcStr[i];
  +    }
   
  -     targetStr[copySize] = 0;
  +    targetStr[copySize] = 0;
   }
   
   /**
  @@ -1450,25 +1446,24 @@
   void XMLString::subString(XMLCh* const targetStr, const XMLCh* const srcStr
                             , const int startIndex, const int endIndex)
   {
  -     //if (startIndex < 0 || endIndex < 0)
  +    //if (startIndex < 0 || endIndex < 0)
       //    ThrowXML(ArrayIndexOutOfBoundsException, XMLExcepts::Str_NegativeIndex);
   
  -     if (targetStr == 0)
  +    if (targetStr == 0)
           ThrowXML(IllegalArgumentException, XMLExcepts::Str_ZeroSizedTargetBuf);
   
       const int srcLen = stringLen(srcStr);
  -     const int copySize = endIndex - startIndex;
  +    const int copySize = endIndex - startIndex;
   
       // Make sure the start index is within the XMLString bounds
  -     if (startIndex > srcLen-1 || endIndex > srcLen )
  +    if ( startIndex < 0 || startIndex > endIndex || endIndex > srcLen)
           ThrowXML(ArrayIndexOutOfBoundsException, XMLExcepts::Str_StartIndexPastEnd);
   
  -     for (int i= startIndex; i < endIndex; i++) {
  -
  -             targetStr[i-startIndex] = srcStr[i];
  -     }
  +    for (int i= startIndex; i < endIndex; i++) {
  +        targetStr[i-startIndex] = srcStr[i];
  +    }
   
  -     targetStr[copySize] = 0;
  +    targetStr[copySize] = 0;
   }
   
   RefVectorOf<XMLCh>* XMLString::tokenizeString(const XMLCh* const tokenizeSrc)
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to