Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6923685

HTMLEditorKit throws RuntimeException with invalid HTML

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Cannot Reproduce
    • Icon: P4 P4
    • None
    • 6u18
    • client-libs

      FULL PRODUCT VERSION :
      java version "1.6.0_18"
      Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
      Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)

      ADDITIONAL OS VERSION INFORMATION :
      Microsoft Windows XP [Version 5.1.2600]

      A DESCRIPTION OF THE PROBLEM :
      When an HTML component such as JEditorPane is presented with the (invalid) HTML "<html><frame>", a plain RuntimeException is thrown, followed by numerous ArrayIndexOutOfBounds exceptions. Sometimes, the RuntimeException is not first, but is buried in the AIOOBEs.

      This is identical to bug 4673343, which was incorrectly closed as a duplicate of 4652898 (it has nothing at all to do with 4652898, and it was never fixed).

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Compile and run program with specified HTML file in same directory.

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      Expect a blank JEditorPane. Invalid HTML should not cause an unchecked exception.

      ACTUAL -
      A blank JEditorPane with lots of exceptions thrown.

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      Exception in thread "Thread-3" java.lang.RuntimeException: Can't build aframeset, BranchElement(frameset) 1,2
      :no ROWS or COLS defined.
      at javax.swing.text.html.HTMLEditorKit$HTMLFactory.create(HTMLEditorKit.java:1142)
      at javax.swing.text.CompositeView.loadChildren(CompositeView.java:95)
      at javax.swing.text.CompositeView.setParent(CompositeView.java:122)
      at javax.swing.text.html.BlockView.setParent(BlockView.java:55)
      at javax.swing.text.html.HTMLEditorKit$HTMLFactory$BodyBlockView.setParent(HTMLEditorKit.java:1277)
      at javax.swing.text.CompositeView.replace(CompositeView.java:200)
      at javax.swing.text.BoxView.replace(BoxView.java:164)
      at javax.swing.text.View.updateChildren(View.java:1095)
      at javax.swing.text.View.insertUpdate(View.java:679)
      at javax.swing.plaf.basic.BasicTextUI$RootView.insertUpdate(BasicTextUI.java:1590)
      at javax.swing.plaf.basic.BasicTextUI$UpdateHandler.insertUpdate(BasicTextUI.java:1849)
      at javax.swing.text.AbstractDocument.fireInsertUpdate(AbstractDocument.java:185)
      at javax.swing.text.DefaultStyledDocument.create(DefaultStyledDocument.java:145)
      at javax.swing.text.html.HTMLDocument.create(HTMLDocument.java:281)
      at javax.swing.text.html.HTMLDocument$HTMLReader.flushBuffer(HTMLDocument.java:3323)
      at javax.swing.text.html.HTMLDocument$HTMLReader.flush(HTMLDocument.java:2127)
      at javax.swing.text.html.HTMLEditorKit.read(HTMLEditorKit.java:231)
      at javax.swing.JEditorPane.read(JEditorPane.java:555)
      at javax.swing.JEditorPane$PageLoader.run(JEditorPane.java:646)
      Exception in thread "AWT-EventQueue-0" Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1
      at javax.swing.text.html.BlockView.layoutMinorAxis(BlockView.java:245)
      at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:327)
      at javax.swing.text.BoxView.layout(BoxView.java:691)
      at javax.swing.text.BoxView.setSize(BoxView.java:380)
      at javax.swing.plaf.basic.BasicTextUI$RootView.setSize(BasicTextUI.java:1702)
      at javax.swing.plaf.basic.BasicTextUI.modelToView(BasicTextUI.java:1034)
      at javax.swing.text.DefaultCaret.setVisible(DefaultCaret.java:952)
      at javax.swing.text.DefaultCaret.focusGained(DefaultCaret.java:332)
      at java.awt.AWTEventMulticaster.focusGained(AWTEventMulticaster.java:203)
      at java.awt.Component.processFocusEvent(Component.java:6152)
      at java.awt.Component.processEvent(Component.java:6019)
      at java.awt.Container.processEvent(Container.java:2041)
      at java.awt.Component.dispatchEventImpl(Component.java:4630)
      at java.awt.Container.dispatchEventImpl(Container.java:2099)
      at java.awt.Component.dispatchEvent(Component.java:4460)
      at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1850)
      at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:901)
      at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:513)
      at java.awt.Component.dispatchEventImpl(Component.java:4502)
      at java.awt.Container.dispatchEventImpl(Container.java:2099)
      at java.awt.Window.dispatchEventImpl(Window.java:2478)
      at java.awt.Component.dispatchEvent(Component.java:4460)
      at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
      at java.awt.SequencedEvent.dispatch(SequencedEvent.java:101)
      at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
      at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
      at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
      at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
      at java.awt.EventDispatchThread.run(Event

      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      -------------------tmp6.html-----------------------
      <html><frame>
      --------------------------------------------------------

      -------------JEditorPaneBug8.java------------
      import javax.swing.*;

      public class JEditorPaneBug8 {
         public static void main(String args[]) {
            JFrame frame = new JFrame();
            JEditorPane jep = new JEditorPane();
            jep.setEditable(true);
            frame.getContentPane().add(jep);
            frame.setSize(400, 400);
            frame.setVisible(true);
         
            try {
               jep.setPage("file:tmp6.html"); }
               catch(java.io.IOException e) { }
         }
      }
      ----------------------------------------------------------
      ---------- END SOURCE ----------

            trebari Tejpal Rebari (Inactive)
            ndcosta Nelson Dcosta (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: