diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2014-06-27 21:52:03 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2014-06-27 21:52:03 (GMT) |
commit | 4d4c69dc35154a9c21fed1b6b4088e741fbc6ae6 (patch) | |
tree | f4ca0640823595c1beca048f262ee5035166ec14 /Lib/asyncore.py | |
parent | 252d40ef1ee627148ae12ab9cbf812cfeeb27655 (diff) | |
download | cpython-4d4c69dc35154a9c21fed1b6b4088e741fbc6ae6.zip cpython-4d4c69dc35154a9c21fed1b6b4088e741fbc6ae6.tar.gz cpython-4d4c69dc35154a9c21fed1b6b4088e741fbc6ae6.tar.bz2 |
Issue #11453: asyncore: emit a ResourceWarning when an unclosed file_wrapper
object is destroyed. The destructor now closes the file if needed. The close()
method can now be called twice: the second call does nothing.
Diffstat (limited to 'Lib/asyncore.py')
-rw-r--r-- | Lib/asyncore.py | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/Lib/asyncore.py b/Lib/asyncore.py index 75481dd..00a6396 100644 --- a/Lib/asyncore.py +++ b/Lib/asyncore.py @@ -614,6 +614,11 @@ if os.name == 'posix': def __init__(self, fd): self.fd = os.dup(fd) + def __del__(self): + if self.fd >= 0: + warnings.warn("unclosed file %r" % self, ResourceWarning) + self.close() + def recv(self, *args): return os.read(self.fd, *args) @@ -632,7 +637,10 @@ if os.name == 'posix': write = send def close(self): + if self.fd < 0: + return os.close(self.fd) + self.fd = -1 def fileno(self): return self.fd |