[slime-devel] open-streams loosing a stream

Stas Boukarev stassats at gmail.com
Mon Jun 29 04:25:56 UTC 2009


Terje Norderhaug <terje at in-progress.com> writes:

> I am setting up a dedicated output stream between Swank and the  
> client, with *use-dedicated-output-stream* set to T. I discovered  
> that the open-streams function of swank apparently loose an open  
> stream if *use-dedicated-output-stream* is non-nil:
>
> (let* ([...]
>           (dedicated-output (if *use-dedicated-output-stream*
>                                 (open-dedicated-output-stream
>                                  (connection.socket-io connection))))
>           (out (make-output-stream output-fn))
>           (in (make-input-stream input-fn))
>           (out (or dedicated-output out)) <---
>           (io (make-two-way-stream in out))
>           (repl-results (make-output-stream-for-target connection
>                                                        :repl-result)))
>      (when (eq (connection.communication-style connection) :spawn)
>        (setf (connection.auto-flush-thread connection)
>              (spawn (lambda () (auto-flush-loop out))
>                     :name "auto-flush-thread")))
>      (values dedicated-output in out io repl-results)))
>
> I suppose this isn't intentional? Here is a candidate patch that  
> avoids creating the output stream if there is a stream for dedicated- 
> output:
>
> diff -u slime-2009-06-28/swank.lisp slime-2009-06-28+/swank.lisp
> --- slime-2009-06-28/swank.lisp 2009-06-25 00:15:03.000000000 -0700
> +++ slime-2009-06-28+/swank.lisp        2009-06-28 18:17:56.000000000  
> -0700
> @@ -905,9 +905,8 @@
>            (dedicated-output (if *use-dedicated-output-stream*
>                                  (open-dedicated-output-stream
>                                   (connection.socket-io connection))))
> -         (out (make-output-stream output-fn))
>            (in (make-input-stream input-fn))
> -         (out (or dedicated-output out))
> +         (out (or dedicated-output (make-output-stream output-fn)))
>            (io (make-two-way-stream in out))
>            (repl-results (make-output-stream-for-target connection
>                                                         :repl-result)))
>
You are right, committed. Thanks.

-- 
With best regards, Stas.




More information about the slime-devel mailing list