[slime-devel] Error in swank-fancy-inspector when inspecting network streams [with patch]

Tobias C. Rittweiler tcr at freebits.de
Mon Jan 11 19:00:17 UTC 2010


Russ Tyndall <russ at acceleration.net> writes:

> When attempting to inspect a network-stream of underlying type
> SB-SYS:FD-STREAM I always get the following error:
>
> Error: The value NIL is not of type PATHNAME.
>
> I wrote a small patch to swank-fancy-inspector to ignore errors coming
> from accessing the pathname slot and not render the action link (visit
> file and show current position) when we do not have a pathname.

The actual issue is

  https://bugs.launchpad.net/sbcl/+bug/310098

>
> Cheers,
> Russ Tyndall
> Acceleration.net
> Software Developer
>
> commit a26d435542936b2065b9d30e94df7bbed156a0e2
> Author: Russ Tyndall <russ at acceleration.net>
> Date:   Mon Jan 11 12:04:16 2010 -0500
>
>     Made swank-fancy-inspector NOT error when attempting to inspect network streams (due to their pathname being unbound)
>
> diff --git a/contrib/swank-fancy-inspector.lisp b/contrib/swank-fancy-inspector.lisp
> index f68c6b0..f30e0c0 100644
> --- a/contrib/swank-fancy-inspector.lisp
> +++ b/contrib/swank-fancy-inspector.lisp
> @@ -805,27 +805,29 @@ SPECIAL-OPERATOR groups."
>  (defmethod emacs-inspect ((stream file-stream))
>    (multiple-value-bind (content)
>        (call-next-method)
> -            (append
> -             `("Pathname: "
> -               (:value ,(pathname stream))
> -               (:newline) "  "
> -               ,@(when (open-stream-p stream)
> -                   `((:action "[visit file and show current position]"
> -                              ,(make-visit-file-thunk stream)
> -                              :refreshp nil)
> -                     (:newline))))
> -             content)))
> +    (let ((pathname (ignore-errors (pathname stream))))
> +      (append
> +       `("Pathname: "
> +	 (:value ,pathname)
> +	 (:newline) "  "
> +	 ,@(when (and (open-stream-p stream) pathname)
> +	     `((:action "[visit file and show current position]"
> +		 ,(make-visit-file-thunk stream)
> +		 :refreshp nil)
> +	       (:newline))))
> +       content))))
>  
>  (defmethod emacs-inspect ((condition stream-error))
>    (multiple-value-bind (content)
>        (call-next-method)
> -    (let ((stream (stream-error-stream condition)))
> +    (let* ((stream (stream-error-stream condition))
> +	   (pathname (ignore-errors (pathname stream))))
>        (if (typep stream 'file-stream)
>                    (append
>                     `("Pathname: "
> -                     (:value ,(pathname stream))
> +                     (:value ,pathname)
>                       (:newline) "  "
> -                     ,@(when (open-stream-p stream)
> +                     ,@(when (and (open-stream-p stream) pathname)
>                           `((:action "[visit file and show current position]"
>                                      ,(make-visit-file-thunk stream)
>                                      :refreshp nil)

(Is there something better than using IGNORE-ERRORS here?)

In case, PATHNAME signals an error, the "PATHNAME: ..." ispec should
be omitted completely, I think.

  -T.





More information about the slime-devel mailing list