[pypy-commit] pypy py3.6: merge fix-leak-of-file-descriptor-with-_iofile which fixes a resource leak

mattip pypy.commits at gmail.com
Wed Jun 5 01:51:20 EDT 2019


Author: mattip <matti.picus at gmail.com>
Branch: py3.6
Changeset: r96745:7c2732ad825a
Date: 2019-06-05 05:50 +0000
http://bitbucket.org/pypy/pypy/changeset/7c2732ad825a/

Log:	merge fix-leak-of-file-descriptor-with-_iofile which fixes a
	resource leak

diff --git a/pypy/module/_io/interp_fileio.py b/pypy/module/_io/interp_fileio.py
--- a/pypy/module/_io/interp_fileio.py
+++ b/pypy/module/_io/interp_fileio.py
@@ -256,6 +256,7 @@
         except:
             if not fd_is_own:
                 self.fd = -1
+            self._close(space)
             raise
 
     def _mode(self):
diff --git a/pypy/module/_io/test/test_fileio.py b/pypy/module/_io/test/test_fileio.py
--- a/pypy/module/_io/test/test_fileio.py
+++ b/pypy/module/_io/test/test_fileio.py
@@ -57,8 +57,11 @@
 
     def test_open_directory(self):
         import _io
-        import os
-        raises(IOError, _io.FileIO, self.tmpdir, "rb")
+        import os, warnings
+        with warnings.catch_warnings(record=True) as w:
+            warnings.simplefilter('always', ResourceWarning)
+            raises(IOError, _io.FileIO, self.tmpdir, "rb")
+            assert len(w) == 0
         if os.name != 'nt':
             fd = os.open(self.tmpdir, os.O_RDONLY)
             raises(IOError, _io.FileIO, fd, "rb")


More information about the pypy-commit mailing list