From: Rob Browning Date: Thu, 17 Jul 2014 17:47:43 +0000 (-0500) Subject: hlinkdb.py: clean up temp file more carefully X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=182dc23ae073e56b11943177d8c662e209c8a9c7;p=packages%2Fb%2Fbup.git 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 --- 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):