From 182dc23ae073e56b11943177d8c662e209c8a9c7 Mon Sep 17 00:00:00 2001 From: Rob Browning Date: Thu, 17 Jul 2014 12:47:43 -0500 Subject: [PATCH] hlinkdb.py: clean up temp file more carefully Make sure to always close the temp file, and if something goes wrong while preparing the save, make sure to delete it and remove it from consideration by commit. Signed-off-by: Rob Browning Tested-by: Rob Browning --- lib/bup/hlinkdb.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/lib/bup/hlinkdb.py b/lib/bup/hlinkdb.py index 3a53b40..5edb0a6 100644 --- a/lib/bup/hlinkdb.py +++ b/lib/bup/hlinkdb.py @@ -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): -- 2.39.2