FULL PRODUCT VERSION : java version "1.6.0_02" Java(TM) SE Runtime Environment (build 1.6.0_02-b05) Java HotSpot(TM) Client VM (build 1.6.0_02-b05, mixed mode, sharing) ADDITIONAL OS VERSION INFORMATION : Microsoft Windows XP [Version 5.1.2600] A DESCRIPTION OF THE PROBLEM : JTree isExpanded(TreePath) is unnecessarily recursive. With the default stack size (or any reasonable size) a TreePath to a few thousand entries will lead to StackOverflowException. Trees are used to represent graphs, e.g., reference chains that can easily exceed this depth. isExpanded(TreePath) can be trivially rewritten as a loop. STEPS TO FOLLOW TO REPRODUCE THE PROBLEM : In a loop, lengthen a path by adding children to a branch of a tree, one per level, and keep calling isVisible() on the TreePath that represents the deepest child until you get StackOverflowException. EXPECTED VERSUS ACTUAL BEHAVIOR : EXPECTED - Some degradation in speed, but no exceptions. ACTUAL - StackOverflowException when isVisible(TreePath) calls isExpanded(TreePath). REPRODUCIBILITY : This bug can be reproduced always.
|