Switch FileHeader.extractFileLines to TemporaryBuffer.Heap
File contents are processed into a single byte[] for character conversion. The data must fit entirely in memory, so avoid any file IO. Change-Id: I3fe8be2e5f37d5ae953596dda1ed3fe6d4f6aebc
This commit is contained in:
parent
67b8bcc1c4
commit
4206ea43b8
|
@ -267,7 +267,7 @@ private String[] extractFileLines(final Charset[] csGuess) {
|
|||
final TemporaryBuffer[] tmp = new TemporaryBuffer[getParentCount() + 1];
|
||||
try {
|
||||
for (int i = 0; i < tmp.length; i++)
|
||||
tmp[i] = new TemporaryBuffer.LocalFile();
|
||||
tmp[i] = new TemporaryBuffer.Heap(Integer.MAX_VALUE);
|
||||
for (final HunkHeader h : getHunks())
|
||||
h.extractFileLines(tmp);
|
||||
|
||||
|
@ -281,11 +281,6 @@ private String[] extractFileLines(final Charset[] csGuess) {
|
|||
return r;
|
||||
} catch (IOException ioe) {
|
||||
throw new RuntimeException(JGitText.get().cannotConvertScriptToText, ioe);
|
||||
} finally {
|
||||
for (final TemporaryBuffer b : tmp) {
|
||||
if (b != null)
|
||||
b.destroy();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -139,14 +139,10 @@ public void parse(final InputStream is) throws IOException {
|
|||
}
|
||||
|
||||
private static byte[] readFully(final InputStream is) throws IOException {
|
||||
final TemporaryBuffer b = new TemporaryBuffer.LocalFile();
|
||||
try {
|
||||
TemporaryBuffer b = new TemporaryBuffer.Heap(Integer.MAX_VALUE);
|
||||
b.copy(is);
|
||||
b.close();
|
||||
return b.toByteArray();
|
||||
} finally {
|
||||
b.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue