]> source.dussan.org Git - jgit.git/commitdiff
Ensure PackWriter releases its ObjectReader 86/986/1
authorShawn O. Pearce <spearce@spearce.org>
Mon, 28 Jun 2010 17:16:27 +0000 (10:16 -0700)
committerShawn O. Pearce <spearce@spearce.org>
Mon, 28 Jun 2010 17:16:27 +0000 (10:16 -0700)
Change-Id: I3f8af29066cc5a2132dc4a75c9654d97800f2f18
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java

index 031ea2b202d8c76e87c927229080b2112b36bed8..a716845b40e2380d127428760ec89091458e9338 100644 (file)
@@ -610,19 +610,22 @@ public class PackWriter {
         *             stream.
         */
        public void writePack(OutputStream packStream) throws IOException {
-               if ((reuseDeltas || reuseObjects) && reuseSupport != null)
-                       searchForReuse();
-
-               out = new PackOutputStream(packStream, isDeltaBaseAsOffset());
-
-               writeMonitor.beginTask(WRITING_OBJECTS_PROGRESS, getObjectsNumber());
-               out.writeFileHeader(PACK_VERSION_GENERATED, getObjectsNumber());
-               writeObjects();
-               writeChecksum();
-
-               out = null;
-               reader.release();
-               writeMonitor.endTask();
+               try {
+                       if ((reuseDeltas || reuseObjects) && reuseSupport != null)
+                               searchForReuse();
+
+                       out = new PackOutputStream(packStream, isDeltaBaseAsOffset());
+
+                       int cnt = getObjectsNumber();
+                       writeMonitor.beginTask(WRITING_OBJECTS_PROGRESS, cnt);
+                       out.writeFileHeader(PACK_VERSION_GENERATED, cnt);
+                       writeObjects();
+                       writeChecksum();
+                       writeMonitor.endTask();
+               } finally {
+                       out = null;
+                       reader.release();
+               }
        }
 
        private void searchForReuse() throws IOException {