Browse Source

ResolveMerger: Destroy TemporaryBuffer on unchecked exceptions

Previously, we called destroy() to delete the temp file on failure only
when catching an IOException, not a RuntimeException. Use a slightly
different construction with a finally block to ensure it's always
deleted on error (assuming the JVM is still healthy enough).

Change-Id: Ie201f3cfc81099ee1cafed066632da76223cef1f
tags/v5.3.0.201903061415-rc1
Dave Borowitz 5 years ago
parent
commit
ea54b6a5a7
1 changed files with 6 additions and 3 deletions
  1. 6
    3
      org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java

+ 6
- 3
org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java View File

@@ -1024,13 +1024,16 @@ public class ResolveMerger extends ThreeWayMerger {
throws IOException {
TemporaryBuffer.LocalFile buf = new TemporaryBuffer.LocalFile(
db != null ? nonNullRepo().getDirectory() : null, inCoreLimit);
boolean success = false;
try {
new MergeFormatter().formatMerge(buf, result,
Arrays.asList(commitNames), UTF_8);
buf.close();
} catch (IOException e) {
buf.destroy();
throw e;
success = true;
} finally {
if (!success) {
buf.destroy();
}
}
return buf;
}

Loading…
Cancel
Save