From ccc69bd32315add12fe0376fe6f5fd3f6f334886 Mon Sep 17 00:00:00 2001 From: Stelian Ionescu Date: Tue, 2 Apr 2013 21:55:05 +0200 Subject: [PATCH] SETUP-SLAVE-PTY: close PTY in case of error --- src/os/create-process-unix.lisp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/os/create-process-unix.lisp b/src/os/create-process-unix.lisp index 0bc18c1..41a1d67 100644 --- a/src/os/create-process-unix.lisp +++ b/src/os/create-process-unix.lisp @@ -223,10 +223,14 @@ (defun setup-slave-pty (new-ctty-p) (if new-ctty-p - (let ((ptmfd (isys:openpt (logior isys:o-rdwr isys:o-noctty isys:o-cloexec)))) - (isys:grantpt ptmfd) - (isys:unlockpt ptmfd) - (values ptmfd (isys:ptsname ptmfd))) + (let (ptmfd) + (unwind-protect-case () + (progn + (setf ptmfd (isys:openpt (logior isys:o-rdwr isys:o-noctty isys:o-cloexec))) + (isys:grantpt ptmfd) + (isys:unlockpt ptmfd) + (values ptmfd (isys:ptsname ptmfd))) + (:abort (when ptmfd (isys:close ptmfd))))) (values nil nil))) (defmacro with-pty ((new-ctty-p ptmfd pts) &body body) -- 2.11.4.GIT