]> arthur.barton.de Git - bup.git/commitdiff
PackWriter._end: always try to release objcache and parentfd
authorJohannes Berg <johannes@sipsolutions.net>
Sun, 5 Dec 2021 20:19:52 +0000 (21:19 +0100)
committerRob Browning <rlb@defaultvalue.org>
Sat, 1 Jan 2022 20:08:00 +0000 (14:08 -0600)
Move the self.file guard inside the contextmanager.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Reviewed-by: Rob Browning <rlb@defaultvalue.org>
[rlb@defaultvalue.org: split from larger commit; adjust commit message]
Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Tested-by: Rob Browning <rlb@defaultvalue.org>
lib/bup/git.py

index 26bdf6d5a303d8dd7041b94bc0c317d7db6535b9..270f1eb41e5fbf01e4efdc0d7d47f296f420f4be 100644 (file)
@@ -918,16 +918,15 @@ class PackWriter(object):
 
     def _end(self, run_midx=True, abort=False):
         # Ignores run_midx during abort
-        if not self.file:
-            return None
+        self.parentfd, pfd, = None, self.parentfd
         self.file, f = None, self.file
         self.idx, idx = None, self.idx
-        self.parentfd, pfd, = None, self.parentfd
-
         try:
             with nullcontext_if_not(self.objcache), \
                  finalized(pfd, lambda x: x is not None and os.close(x)), \
-                 f:
+                 nullcontext_if_not(f):
+                if not f:
+                    return None
 
                 if abort:
                     os.unlink(self.filename + b'.pack')