From c57a285cb4cd61439fd3ea804184ed8a8a1ac358 Mon Sep 17 00:00:00 2001 From: Tim Peters Date: Mon, 29 Oct 2001 21:46:08 +0000 Subject: 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. --- Lib/tempfile.py | 10 ++++++---- Lib/test/test_tempfile.py | 10 ++++++++++ 2 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 Lib/test/test_tempfile.py 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() -- cgit v0.12