DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11156>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11156

ArrayIndexOutOfBoundsException parsing file with DOCTYPE but no body

           Summary: ArrayIndexOutOfBoundsException parsing file with DOCTYPE
                    but no body
           Product: Xerces2-J
           Version: 2.0.2
          Platform: PC
        OS/Version: Windows NT/2K
            Status: NEW
          Severity: Minor
          Priority: Other
         Component: DOM
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


If you try to parse an XML file that consists solely of an XML decl and doctype 
(but no root element or anything else) you get an 
ArrayIndexOutOfBoundsException.
This only happens if you have set an EntityResolver.
Reproducable with test class below. JDK version is 1.4.0.
Thanks.
----------

import org.apache.xerces.parsers.DOMParser;
import java.io.Reader;
import java.io.StringReader;
import org.xml.sax.InputSource;
import org.xml.sax.EntityResolver;

public class TestXerces
{    
    static String testCase = new String(
    "<?xml version=\"1.0\" encoding=\"US-ASCII\"?>"
    + "<!DOCTYPE bob PUBLIC \"-//TEST//DTD TEST DTD//EN\" \"\">"
    );
    
    public static void main(String args[]) throws Throwable
    {
        Reader r = new StringReader(testCase);
        InputSource in = new InputSource(r);
        DOMParser parser = new DOMParser();
        parser.setEntityResolver(new EntityResolver() {
            public InputSource resolveEntity (String publicId, String systemId)
            {
                return new InputSource(new StringReader("<!ELEMENT foo 
EMPTY>"));
            }
        });

        parser.parse(in);
        
        System.exit(0);
    }
}

-----------------

java.lang.ArrayIndexOutOfBoundsException

        at org.apache.xerces.impl.dtd.DTDGrammar.endParameterEntity
(DTDGrammar.java:503)

        at org.apache.xerces.impl.dtd.XMLDTDProcessor.endParameterEntity
(XMLDTDProcessor.java:732)

        at org.apache.xerces.impl.XMLDTDScannerImpl.endEntity
(XMLDTDScannerImpl.java:523)

        at org.apache.xerces.impl.XMLEntityManager.endEntity
(XMLEntityManager.java:1228)

        at org.apache.xerces.impl.XMLEntityManager$EntityScanner.load
(XMLEntityManager.java:3275)

        at org.apache.xerces.impl.XMLEntityManager$EntityScanner.load
(XMLEntityManager.java:3281)

        at org.apache.xerces.impl.XMLEntityManager$EntityScanner.skipSpaces
(XMLEntityManager.java:2930)

        at org.apache.xerces.impl.XMLDTDScannerImpl.skipSeparator
(XMLDTDScannerImpl.java:1901)

        at org.apache.xerces.impl.XMLDTDScannerImpl.scanDecls
(XMLDTDScannerImpl.java:1876)

        at org.apache.xerces.impl.XMLDTDScannerImpl.scanDTDExternalSubset
(XMLDTDScannerImpl.java:304)

        at org.apache.xerces.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch
(XMLDocumentScannerImpl.java:835)

        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument
(XMLDocumentFragmentScannerImpl.java:333)

        at org.apache.xerces.parsers.DTDConfiguration.parse
(DTDConfiguration.java:524)

        at org.apache.xerces.parsers.DTDConfiguration.parse
(DTDConfiguration.java:580)

        at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:152)

        at org.apache.xerces.parsers.DOMParser.parse(DOMParser.java:253)

        at TestXerces.main(TestXerces.java:26)

Exception in thread "main" 
Process exited with exit code 1.

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

Reply via email to