]> arthur.barton.de Git - bup.git/commitdiff
PackWriter _end: try to always close the file
authorRob Browning <rlb@defaultvalue.org>
Sun, 3 Jan 2016 16:59:33 +0000 (10:59 -0600)
committerRob Browning <rlb@defaultvalue.org>
Mon, 18 Jan 2016 17:29:41 +0000 (11:29 -0600)
Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Tested-by: Rob Browning <rlb@defaultvalue.org>
lib/bup/git.py

index 2f331713578a599464ed5918e4fd1a99f70026d6..38dbc3158e62c726ded54a893c01567caa7417e7 100644 (file)
@@ -694,24 +694,26 @@ class PackWriter:
         f = self.file
         if not f: return None
         self.file = None
-        self.objcache = None
-        idx = self.idx
-        self.idx = None
+        try:
+            self.objcache = None
+            idx = self.idx
+            self.idx = None
 
-        # update object count
-        f.seek(8)
-        cp = struct.pack('!i', self.count)
-        assert(len(cp) == 4)
-        f.write(cp)
-
-        # calculate the pack sha1sum
-        f.seek(0)
-        sum = Sha1()
-        for b in chunkyreader(f):
-            sum.update(b)
-        packbin = sum.digest()
-        f.write(packbin)
-        f.close()
+            # update object count
+            f.seek(8)
+            cp = struct.pack('!i', self.count)
+            assert(len(cp) == 4)
+            f.write(cp)
+
+            # calculate the pack sha1sum
+            f.seek(0)
+            sum = Sha1()
+            for b in chunkyreader(f):
+                sum.update(b)
+            packbin = sum.digest()
+            f.write(packbin)
+        finally:
+            f.close()
 
         obj_list_sha = self._write_pack_idx_v2(self.filename + '.idx', idx, packbin)