The following issue has been updated:

    Updater: larry oneill (mailto:[EMAIL PROTECTED])
       Date: Fri, 1 Oct 2004 9:41 AM
    Comment:
Usage 
java RepeatingParser <xmlFile> <int:iterations <int:failOnIteration> [boolean 
failAtFileEnd]

If the file is over 2k in size, an ArrayIndexOutOfBoundsException will be shown, as 
the artificial zero byte read is generated on the second byte array read (after 2048 
bytes).
If the 4th arg is 'true' and the XML file ends with a Unix style LF, a 
SAXParseException will be thrown with one of the two messages mentioned in the 
description.
    Changes:
             Attachment changed to RepeatingParser.java
    ---------------------------------------------------------------------
For a full history of the issue, see:

  http://issues.apache.org/jira/browse/XERCESJ-1015?page=history

---------------------------------------------------------------------
View the issue:
  http://issues.apache.org/jira/browse/XERCESJ-1015

Here is an overview of the issue:
---------------------------------------------------------------------
        Key: XERCESJ-1015
    Summary: Zero byte read on InputStream causes false SAXParseException when LF at 
end of file
       Type: Bug

     Status: Unassigned
   Priority: Major

    Project: Xerces2-J
 Components: 
             SAX
   Versions:
             2.6.0
             2.6.2

   Assignee: 
   Reporter: larry oneill

    Created: Fri, 1 Oct 2004 9:36 AM
    Updated: Fri, 1 Oct 2004 9:41 AM
Environment: Windows XP, 586

Description:
Under the following circumstances false SAXParseExceptions are thrown.

When a document is being parsed and has reached the end of the document.
If the InputStream supplying the document returns a 0 length indicator (meaning no 
bytes currently available) AND
There is a Line Feed character at the end of the file, after the last element (without 
a carriage return).
Then a false SAXParseException with one of the two following messages is thrown:
"Content is not allowed in trailing section"
or 
"The markup in the document following the root element must be well-formed"

This could happen if the InputStream is reading from a buffer whose writer thread has 
returned a 0 instead of -1 when the buffer is closed. While the writer to the buffer 
should return a -1 on buffer close, in practice this may not always happen and Xerces 
should cater for it.  It certainly should not throw a spurious exception.

If a zero byte count is returned by an InputStream read while reading in the middle of 
the document an ArrayIndexOutOfBounds exception is thrown.

I will include sample code to demonstrate both of these cases and a possible fix for 
the problem.


---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.

If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa

If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


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

Reply via email to