mirror of
https://github.com/python/cpython.git
synced 2025-08-30 21:48:47 +00:00
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:
parent
252d40ef1e
commit
4d4c69dc35
3 changed files with 28 additions and 0 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue