Index: modules/text/src/main/java/java/text/Bidi.java =================================================================== --- modules/text/src/main/java/java/text/Bidi.java (revision 427923) +++ modules/text/src/main/java/java/text/Bidi.java (working copy) @@ -336,7 +336,7 @@ * @return the level of the run. */ public int getRunLevel(int run) { - return runs[run].getLevel(); + return runs[normalizeRunIndex(run)].getLevel(); } /** @@ -347,7 +347,7 @@ * @return the limit offset of the run. */ public int getRunLimit(int run) { - return runs[run].getLimit(); + return runs[normalizeRunIndex(run)].getLimit(); } /** @@ -358,7 +358,7 @@ * @return the start offset of the run. */ public int getRunStart(int run) { - return runs[run].getStart(); + return runs[normalizeRunIndex(run)].getStart(); } /** @@ -464,4 +464,16 @@ return super.toString() + "[direction: " + direction + " baselevel: " + baseLevel + " length: " + length + " runs: " + runs + "]"; } + + private int normalizeRunIndex(final int run) { + if (run < 0) { + return 0; + } + + if (run > runs.length - 1) { + return runs.length - 1; + } + + return run; + } }