diff options
-rw-r--r-- | Lib/tempfile.py | 10 | ||||
-rw-r--r-- | Lib/test/test_tempfile.py | 10 |
2 files changed, 16 insertions, 4 deletions
diff --git a/Lib/tempfile.py b/Lib/tempfile.py index f1d53db..96245d8 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 0000000..286e79c --- /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() |