]> source.dussan.org Git - jgit.git/commitdiff
Release ObjectInserter in merge() not mergeImpl() 84/984/1
authorShawn O. Pearce <spearce@spearce.org>
Mon, 28 Jun 2010 16:35:55 +0000 (09:35 -0700)
committerShawn O. Pearce <spearce@spearce.org>
Mon, 28 Jun 2010 16:35:55 +0000 (09:35 -0700)
By doing the release at the higher level class, we can ensure
the release occurs if the inserter was allocated, even if the
implementation forgets to do this.  Since the higher level class
is what allocated it, it makes sense to have it also do the release.

Change-Id: Id617b2db864c3208ed68cba4eda80e51612359ad
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
org.eclipse.jgit/src/org/eclipse/jgit/merge/Merger.java
org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategySimpleTwoWayInCore.java

index 38a8b8eae5308ebabe7087912b4cc0027993d490..d95b11159c0286238cf3c55fe91cf5dde0e90eca 100644 (file)
@@ -148,7 +148,12 @@ public abstract class Merger {
                for (int i = 0; i < sourceObjects.length; i++)
                        sourceTrees[i] = walk.parseTree(sourceObjects[i]);
 
-               return mergeImpl();
+               try {
+                       return mergeImpl();
+               } finally {
+                       if (inserter != null)
+                               inserter.release();
+               }
        }
 
        /**
index aa2321b4ae90a0a700b779358387b91930d6088c..891abe0580eafa30dc51a57a664f41816dcba5a4 100644 (file)
@@ -154,15 +154,8 @@ public class StrategySimpleTwoWayInCore extends ThreeWayMergeStrategy {
                                return false;
                        try {
                                ObjectInserter odi = getObjectInserter();
-                               try {
-                                       resultTree = cache.writeTree(odi);
-                                       odi.flush();
-                               } finally {
-                                       // We don't know if our caller will release the
-                                       // inserter, so make sure we do it ourselves.
-                                       //
-                                       odi.release();
-                               }
+                               resultTree = cache.writeTree(odi);
+                               odi.flush();
                                return true;
                        } catch (UnmergedPathException upe) {
                                resultTree = null;