]> arthur.barton.de Git - bup.git/blobdiff - lib/bup/hlinkdb.py
hlinkdb.py: clean up temp file more carefully
[bup.git] / lib / bup / hlinkdb.py
index 3a53b4059952af61828198ed5e783cf1da818ad8..5edb0a627961bd9ca50da249ec214fc791d562fd 100644 (file)
@@ -40,20 +40,21 @@ class HLinkDB:
             (dir, name) = os.path.split(self._filename)
             (ffd, self._tmpname) = tempfile.mkstemp('.tmp', name, dir)
             try:
-                f = os.fdopen(ffd, 'wb', 65536)
-            except:
-                os.close(ffd)
-                raise
-            try:
-                cPickle.dump(self._node_paths, f, 2)
+                try:
+                    f = os.fdopen(ffd, 'wb', 65536)
+                except:
+                    os.close(ffd)
+                    raise
+                try:
+                    cPickle.dump(self._node_paths, f, 2)
+                finally:
+                    f.close()
+                    f = None
             except:
-                f.close()
-                os.unlink(self._tmpname)
+                tmpname = self._tmpname
                 self._tmpname = None
+                os.unlink(tmpname)
                 raise
-            else:
-                f.close()
-                f = None
         self._save_prepared = True
 
     def commit_save(self):