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.
This commit is contained in:
Victor Stinner 2014-06-27 23:52:03 +02:00
parent 252d40ef1e
commit 4d4c69dc35
3 changed files with 28 additions and 0 deletions

View file

@ -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