]> arthur.barton.de Git - bup.git/commitdiff
MetaStoreReader: protect __del__ against init failures
authorRob Browning <rlb@defaultvalue.org>
Sun, 19 Dec 2021 21:11:28 +0000 (15:11 -0600)
committerRob Browning <rlb@defaultvalue.org>
Sun, 19 Dec 2021 21:12:54 +0000 (15:12 -0600)
The previous code could crash in __del__ if init's open() threw.

Thanks to Johannes Berg for reporting the issue.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Tested-by: Rob Browning <rlb@defaultvalue.org>
lib/bup/index.py

index 3b98892b41b6b223bf74c9d4c5779439b718376f..3941a5ca6b248e516b1e2d7ab010e30ae5b3e7f5 100644 (file)
@@ -50,18 +50,16 @@ class Error(Exception):
 
 class MetaStoreReader:
     def __init__(self, filename):
-        self._closed = False
         self._file = None
         self._file = open(filename, 'rb')
 
     def close(self):
-        self._closed = True
-        if self._file:
-            self._file.close()
-            self._file = None
+        f, self._file = self._file, None
+        if f:
+            f.close()
 
     def __del__(self):
-        assert self._closed
+        assert not self._file
 
     def __enter__(self):
         return self