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: I3fe8be2e5f37d5ae953596dda1ed3fe6d4f6aebctags/v3.4.2.201412180340-r
@@ -267,7 +267,7 @@ public class FileHeader extends DiffEntry { | |||
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 @@ public class FileHeader extends DiffEntry { | |||
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 class Patch { | |||
} | |||
private static byte[] readFully(final InputStream is) throws IOException { | |||
final TemporaryBuffer b = new TemporaryBuffer.LocalFile(); | |||
try { | |||
b.copy(is); | |||
b.close(); | |||
return b.toByteArray(); | |||
} finally { | |||
b.destroy(); | |||
} | |||
TemporaryBuffer b = new TemporaryBuffer.Heap(Integer.MAX_VALUE); | |||
b.copy(is); | |||
b.close(); | |||
return b.toByteArray(); | |||
} | |||
/** |