From: Rob Browning Date: Sun, 3 Jan 2016 16:59:33 +0000 (-0600) Subject: PackWriter _end: try to always close the file X-Git-Tag: 0.28-rc1~28 X-Git-Url: https://arthur.barton.de/gitweb/?a=commitdiff_plain;h=3c3b6b137c55e4a1511c17352d46c660cfb3aee7;p=bup.git PackWriter _end: try to always close the file Signed-off-by: Rob Browning Tested-by: Rob Browning --- diff --git a/lib/bup/git.py b/lib/bup/git.py index 2f33171..38dbc31 100644 --- a/lib/bup/git.py +++ b/lib/bup/git.py @@ -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)