--- old/test/native/logging/test_logStream.cpp 2017-06-21 17:46:10.583527700 +0200 +++ new/test/native/logging/test_logStream.cpp 2017-06-21 17:46:09.857743600 +0200 @@ -66,3 +66,25 @@ LogStream ls(Log(gc)::debug()); verify_stream(&ls); } + +TEST_VM_F(LogStreamTest, TestLineBufferAllocation) { + const int max_line_len = 1024; + char* const test_string = (char*) os::malloc(max_line_len, mtLogging); + memset(test_string, 'A', max_line_len); + for (int interval = 1; interval < max_line_len; interval++) { + LogStream ls(Log(logging)::info()); + int written = 0; + while (written < max_line_len) { + const int to_write = MIN2(interval, max_line_len - written); + ls.write(test_string, interval); + written += interval; + const char* const line_buffer = ls._current_line.ptr(); + for (int i = 0; i < written; i++) { + ASSERT_TRUE(line_buffer[i] == 'A'); + } + ASSERT_TRUE(line_buffer[written] == '\0'); + } + ls.cr(); // I do not expect printout, nor do I care. Just call cr() to flush and avoid assert in ~LogStream(). + } +} +