Browse Source

archive: Release resources before returning

The only caller exits immediately after calling execute() so this
shouldn't make a difference, but it's good practice and should make it
easier to expose the functionality in a public API later.

Change-Id: Ia6cd2ce8382f1a62e576409107fc5c9a6b321fb6
stable-3.0
Jonathan Nieder 12 years ago
parent
commit
70e494f649
  1. 12
      org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Archive.java

12
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Archive.java

@ -78,15 +78,17 @@ class Archive extends TextBuiltin {
@Override @Override
protected void run() throws Exception { protected void run() throws Exception {
final TreeWalk walk = new TreeWalk(db);
final ObjectReader reader = walk.getObjectReader();
final MutableObjectId idBuf = new MutableObjectId(); final MutableObjectId idBuf = new MutableObjectId();
final Archiver fmt = formats.get(format); final Archiver fmt = formats.get(format);
final ArchiveOutputStream outa = fmt.createArchiveOutputStream(outs);
if (tree == null) if (tree == null)
throw die(CLIText.get().treeIsRequired); throw die(CLIText.get().treeIsRequired);
final ArchiveOutputStream outa = fmt.createArchiveOutputStream(outs);
final TreeWalk walk = new TreeWalk(db);
final ObjectReader reader = walk.getObjectReader();
try {
walk.reset(); walk.reset();
walk.addTree(tree); walk.addTree(tree);
walk.setRecursive(true); walk.setRecursive(true);
@ -102,9 +104,11 @@ class Archive extends TextBuiltin {
walk.getObjectId(idBuf, 0); walk.getObjectId(idBuf, 0);
fmt.putEntry(name, mode, reader.open(idBuf), outa); fmt.putEntry(name, mode, reader.open(idBuf), outa);
} }
} finally {
reader.release();
outa.close(); outa.close();
} }
}
static private void warnArchiveEntryModeIgnored(String name) { static private void warnArchiveEntryModeIgnored(String name) {
System.err.println(MessageFormat.format( // System.err.println(MessageFormat.format( //

Loading…
Cancel
Save