summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
Diffstat (limited to 'Lib')
-rw-r--r--Lib/asyncore.py3
-rw-r--r--Lib/test/test_asyncore.py5
2 files changed, 6 insertions, 2 deletions
diff --git a/Lib/asyncore.py b/Lib/asyncore.py
index 705e406..03d1683 100644
--- a/Lib/asyncore.py
+++ b/Lib/asyncore.py
@@ -619,8 +619,9 @@ if os.name == 'posix':
def close(self):
if self.fd < 0:
return
- os.close(self.fd)
+ fd = self.fd
self.fd = -1
+ os.close(fd)
def fileno(self):
return self.fd
diff --git a/Lib/test/test_asyncore.py b/Lib/test/test_asyncore.py
index dc2f716..07edf22 100644
--- a/Lib/test/test_asyncore.py
+++ b/Lib/test/test_asyncore.py
@@ -433,7 +433,10 @@ class FileWrapperTest(unittest.TestCase):
f = asyncore.file_wrapper(fd)
os.close(fd)
- f.close()
+ os.close(f.fd) # file_wrapper dupped fd
+ with self.assertRaises(OSError):
+ f.close()
+
self.assertEqual(f.fd, -1)
# calling close twice should not fail
f.close()