-
Bug
-
Resolution: Fixed
-
P3
-
7
-
b105
-
generic
-
generic
I'm getting the following exception trying to save some html files with HTMLEditorKit:
java.lang.IndexOutOfBoundsException
at java.io.CharArrayWriter.write(CharArrayWriter.java:98)
at javax.swing.text.AbstractWriter.output(AbstractWriter.java:696)
at javax.swing.text.html.HTMLWriter.output(HTMLWriter.java:1186)
at javax.swing.text.AbstractWriter.indent(AbstractWriter.java:477)
at javax.swing.text.html.HTMLWriter.indentSmart(HTMLWriter.java:1269)
at javax.swing.text.html.HTMLWriter.endTag(HTMLWriter.java:596)
at javax.swing.text.html.HTMLWriter.write(HTMLWriter.java:229)
at javax.swing.text.html.HTMLEditorKit.write(HTMLEditorKit.java:319)
at Bug.main(Bug.java:20)
The minimized html that causes the exception is "<pre><p> </pre>", while "<pre><p></pre>" is handling correctly.
To reproduce the problem just compile and run the program below:
---- Bug.java -----
import java.io.CharArrayReader;
import java.io.CharArrayWriter;
import javax.swing.text.html.HTMLDocument;
import javax.swing.text.html.HTMLEditorKit;
public class Bug {
public static void main(String[] args) {
String htmlDoc = "<pre><p> </pre>";
try {
HTMLEditorKit kit = new HTMLEditorKit();
Class c = Class.forName("javax.swing.text.html.parser.ParserDelegator");
HTMLEditorKit.Parser parser = (HTMLEditorKit.Parser) c.newInstance();
HTMLDocument doc = (HTMLDocument) kit.createDefaultDocument();
HTMLEditorKit.ParserCallback htmlReader = doc.getReader(0);
parser.parse(new CharArrayReader(htmlDoc.toCharArray()), htmlReader, true);
htmlReader.flush();
CharArrayWriter writer = new CharArrayWriter(1000);
kit.write(writer, doc, 0, doc.getLength());
writer.flush();
System.out.println(new String(writer.toCharArray()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
-----------------
the bug is reproducible on available JDKs by the moment:
jdk6u29
jdk7-b147
jdk8-b09
java.lang.IndexOutOfBoundsException
at java.io.CharArrayWriter.write(CharArrayWriter.java:98)
at javax.swing.text.AbstractWriter.output(AbstractWriter.java:696)
at javax.swing.text.html.HTMLWriter.output(HTMLWriter.java:1186)
at javax.swing.text.AbstractWriter.indent(AbstractWriter.java:477)
at javax.swing.text.html.HTMLWriter.indentSmart(HTMLWriter.java:1269)
at javax.swing.text.html.HTMLWriter.endTag(HTMLWriter.java:596)
at javax.swing.text.html.HTMLWriter.write(HTMLWriter.java:229)
at javax.swing.text.html.HTMLEditorKit.write(HTMLEditorKit.java:319)
at Bug.main(Bug.java:20)
The minimized html that causes the exception is "<pre><p> </pre>", while "<pre><p></pre>" is handling correctly.
To reproduce the problem just compile and run the program below:
---- Bug.java -----
import java.io.CharArrayReader;
import java.io.CharArrayWriter;
import javax.swing.text.html.HTMLDocument;
import javax.swing.text.html.HTMLEditorKit;
public class Bug {
public static void main(String[] args) {
String htmlDoc = "<pre><p> </pre>";
try {
HTMLEditorKit kit = new HTMLEditorKit();
Class c = Class.forName("javax.swing.text.html.parser.ParserDelegator");
HTMLEditorKit.Parser parser = (HTMLEditorKit.Parser) c.newInstance();
HTMLDocument doc = (HTMLDocument) kit.createDefaultDocument();
HTMLEditorKit.ParserCallback htmlReader = doc.getReader(0);
parser.parse(new CharArrayReader(htmlDoc.toCharArray()), htmlReader, true);
htmlReader.flush();
CharArrayWriter writer = new CharArrayWriter(1000);
kit.write(writer, doc, 0, doc.getLength());
writer.flush();
System.out.println(new String(writer.toCharArray()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
-----------------
the bug is reproducible on available JDKs by the moment:
jdk6u29
jdk7-b147
jdk8-b09