TemporaryFileWrapper: cache the value of os.unlink for use by __del__,

to prevent mysterious errors at shutdown due to "os.unlink" turning into
"None.unlink".
This commit is contained in:
Tim Peters 2001-12-18 22:32:40 +00:00
parent 99d2fbb823
commit a255a72f0a
1 changed files with 8 additions and 1 deletions

View File

@ -128,6 +128,13 @@ class TemporaryFileWrapper:
In particular, it seeks to automatically remove the file when it is In particular, it seeks to automatically remove the file when it is
no longer needed. no longer needed.
""" """
# Cache the unlinker so we don't get spurious errors at shutdown
# when the module-level "os" in None'd out. Note that this must
# be referenced as self.unlink, because the name TemporaryFileWrapper
# may also get None'd out before __del__ is called.
unlink = os.unlink
def __init__(self, file, path): def __init__(self, file, path):
self.file = file self.file = file
self.path = path self.path = path
@ -137,7 +144,7 @@ class TemporaryFileWrapper:
if not self.close_called: if not self.close_called:
self.close_called = 1 self.close_called = 1
self.file.close() self.file.close()
os.unlink(self.path) self.unlink(self.path)
def __del__(self): def __del__(self):
self.close() self.close()