From: Tim Peters Date: Mon, 29 Oct 2001 21:46:08 +0000 (+0000) Subject: SF bug #476138: tempfile behavior across platforms X-Git-Tag: v2.2.1c1~973 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c57a285cb4cd61439fd3ea804184ed8a8a1ac358;p=thirdparty%2FPython%2Fcpython.git SF bug #476138: tempfile behavior across platforms Ensure that a tempfile can be closed any number of times without error. This wasn't true on Windows. --- diff --git a/Lib/tempfile.py b/Lib/tempfile.py index f1d53db1c497..96245d8c396f 100644 --- a/Lib/tempfile.py +++ b/Lib/tempfile.py @@ -131,14 +131,16 @@ class TemporaryFileWrapper: def __init__(self, file, path): self.file = file self.path = path + self.close_called = 0 def close(self): - self.file.close() - os.unlink(self.path) + if not self.close_called: + self.close_called = 1 + self.file.close() + os.unlink(self.path) def __del__(self): - try: self.close() - except: pass + self.close() def __getattr__(self, name): file = self.__dict__['file'] diff --git a/Lib/test/test_tempfile.py b/Lib/test/test_tempfile.py new file mode 100644 index 000000000000..286e79cfa459 --- /dev/null +++ b/Lib/test/test_tempfile.py @@ -0,0 +1,10 @@ +# SF bug #476138: tempfile behavior across platforms +# Ensure that a temp file can be closed any number of times without error. + +import tempfile + +f = tempfile.TemporaryFile("w+b") +f.write('abc\n') +f.close() +f.close() +f.close()