Author: Armin Rigo <[email protected]>
Branch: py3.5-eintr-pep475
Changeset: r88873:de02c97af766
Date: 2016-12-04 11:39 +0100
http://bitbucket.org/pypy/pypy/changeset/de02c97af766/

Log:    close fd's in case of error

diff --git a/pypy/module/posix/interp_posix.py 
b/pypy/module/posix/interp_posix.py
--- a/pypy/module/posix/interp_posix.py
+++ b/pypy/module/posix/interp_posix.py
@@ -1302,11 +1302,16 @@
 
 def openpty(space):
     "Open a pseudo-terminal, returning open fd's for both master and slave 
end."
+    master_fd = slave_fd = -1
     try:
         master_fd, slave_fd = os.openpty()
         rposix.set_inheritable(master_fd, False)
         rposix.set_inheritable(slave_fd, False)
     except OSError as e:
+        if master_fd >= 0:
+            rposix.c_close(master_fd)
+        if slave_fd >= 0:
+            rposix.c_close(slave_fd)
         raise wrap_oserror(space, e, eintr_retry=False)
     return space.newtuple([space.wrap(master_fd), space.wrap(slave_fd)])
 
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to