[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