Index: modules/luni/src/test/java/tests/api/java/util/BitSetTest.java =================================================================== --- modules/luni/src/test/java/tests/api/java/util/BitSetTest.java (revision 547098) +++ modules/luni/src/test/java/tests/api/java/util/BitSetTest.java (working copy) @@ -62,6 +62,13 @@ } catch (NegativeArraySizeException e) { // Correct behaviour } + + try { + bs = new BitSet(Integer.MAX_VALUE); + } catch (OutOfMemoryError e) { + } catch (Exception e) { + fail("TEST FAILED: " + e); + } } /** Index: modules/luni/src/main/java/java/util/BitSet.java =================================================================== --- modules/luni/src/main/java/java/util/BitSet.java (revision 547098) +++ modules/luni/src/main/java/java/util/BitSet.java (working copy) @@ -100,7 +100,7 @@ if (nbits < 0) { throw new NegativeArraySizeException(); } - bits = new long[(nbits + ELM_SIZE - 1) >> OFFSET]; + bits = new long[(nbits >> OFFSET) + ((nbits & RIGHT_BITS) > 0 ? 1 : 0)]; actualArrayLength = 0; isLengthActual = true; }