diff --git a/core/java/com/android/internal/util/LineBreakBufferedWriter.java b/core/java/com/android/internal/util/LineBreakBufferedWriter.java index f831e7a84d2fc..552a93f6666a8 100644 --- a/core/java/com/android/internal/util/LineBreakBufferedWriter.java +++ b/core/java/com/android/internal/util/LineBreakBufferedWriter.java @@ -96,7 +96,7 @@ public class LineBreakBufferedWriter extends PrintWriter { @Override public void write(int c) { - if (bufferIndex < bufferSize) { + if (bufferIndex < buffer.length) { buffer[bufferIndex] = (char)c; bufferIndex++; if ((char)c == '\n') { diff --git a/core/tests/coretests/src/com/android/internal/util/LineBreakBufferedWriterTest.java b/core/tests/coretests/src/com/android/internal/util/LineBreakBufferedWriterTest.java index 49ae10401983c..4845c4ef28f82 100644 --- a/core/tests/coretests/src/com/android/internal/util/LineBreakBufferedWriterTest.java +++ b/core/tests/coretests/src/com/android/internal/util/LineBreakBufferedWriterTest.java @@ -180,6 +180,22 @@ public class LineBreakBufferedWriterTest extends TestCase { assertOutput("aaaaaaaaaabbbbbc\nd", "ddddddddd"); } + public void testMoreThenInitialCapacitySimpleWrites() { + // This check is different from testMoreThanBufferSizeChar. The initial capacity is lower + // than the maximum buffer size here. + final LineBreakBufferedWriter lw = new LineBreakBufferedWriter(mWriter, 1024, 3); + + for(int i = 0; i < 10; i++) { + lw.print('$'); + } + for(int i = 0; i < 10; i++) { + lw.print('%'); + } + lw.flush(); + + assertOutput("$$$$$$$$$$%%%%%%%%%%"); + } + private void assertOutput(String... golden) { List goldList = createTestGolden(golden); assertEquals(goldList, mWriter.getStrings());