summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEdwin Kempin <edwin.kempin@sap.com>2012-10-18 12:33:47 +0200
committerEdwin Kempin <edwin.kempin@sap.com>2012-10-22 11:04:18 +0200
commit2dc9eda865c137913f9f58f377e6b3675b1112db (patch)
tree427321c1c285d9ce7d1bd410ef052971aa2fc606
parente3aa0f541fe2b1f151abdb91aeeb6d85f40837e8 (diff)
Ensure that RevWalk in SubmoduleOp is released
Change-Id: I26fd8e7b1736a2f757e533a9db95590d482cd992 Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java19
1 files changed, 11 insertions, 8 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java
index 2e70621427..ccb91a3a9e 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java
@@ -365,14 +365,17 @@ public class SubmoduleOp {
private static DirCache readTree(final Repository pdb, final Ref branch)
throws MissingObjectException, IncorrectObjectTypeException, IOException {
final RevWalk rw = new RevWalk(pdb);
-
- final DirCache dc = DirCache.newInCore();
- final DirCacheBuilder b = dc.builder();
- b.addTree(new byte[0], // no prefix path
- DirCacheEntry.STAGE_0, // standard stage
- pdb.newObjectReader(), rw.parseTree(branch.getObjectId()));
- b.finish();
- return dc;
+ try {
+ final DirCache dc = DirCache.newInCore();
+ final DirCacheBuilder b = dc.builder();
+ b.addTree(new byte[0], // no prefix path
+ DirCacheEntry.STAGE_0, // standard stage
+ pdb.newObjectReader(), rw.parseTree(branch.getObjectId()));
+ b.finish();
+ return dc;
+ } finally {
+ rw.release();
+ }
}
private static void logAndThrowSubmoduleException(final String errorMsg,