From b5190d9c71b037731a99e027a4047225083cc27d Mon Sep 17 00:00:00 2001 From: mainzelm Date: Wed, 3 Oct 2001 17:09:15 +0000 Subject: [PATCH] Avoid duplicate closing of fds that correspond to ports. --- scsh/newports.scm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/scsh/newports.scm b/scsh/newports.scm index c549ef0..97ee805 100644 --- a/scsh/newports.scm +++ b/scsh/newports.scm @@ -506,7 +506,9 @@ (define (evict-ports fd) (cond ((maybe-fdes->port fd) => ; Shouldn't bump the revealed count. (lambda (port) - (%move-fdport (%dup fd) port 0))))) + (%move-fdport (%dup fd) port 0) + #t)) + (else #f))) (define (%move-fdport fd port new-revealed) (obtain-port-lock port) @@ -529,8 +531,9 @@ ((if (input-port? port) make-input-fdchannel make-output-fdchannel) fd)) (define (close-fdes fd) - (evict-ports fd) - (%close-fdes fd)) + (if (evict-ports fd) + #t ; EBADF should not occur if there is a port + (%close-fdes fd))) (define (flush-fdport fdport) (check-arg fdport? fdport flush-fdport)