Fix ticket:70 by binding *d-p-d* to #p"".
authorRaymond Toy <toy.raymond@gmail.com>
Thu, 24 Jan 2013 04:20:18 +0000 (20:20 -0800)
committerRaymond Toy <toy.raymond@gmail.com>
Thu, 24 Jan 2013 04:20:18 +0000 (20:20 -0800)
This allows logical pathnames (which always have a host to parse
against) and search-lists (which don't have an explicit pathname to
parse against) to be parsed correctly.  See the comment for some
possible issues.

src/code/debug.lisp

index 113ddf0..616b704 100644 (file)
@@ -1477,7 +1477,16 @@ See the CMU Common Lisp User's Manual for more information.
          (aref (or (di:debug-source-start-positions d-source)
                    (error (intl:gettext "No start positions map.")))
                local-tlf-offset))
-        (name (di:debug-source-name d-source)))
+        (name (di:debug-source-name d-source))
+        ;; See ticket:70.  Bind *d-p-d* to a unix host so we can
+        ;; parse logical pathnames and search-lists that might be
+        ;; stored in the source name.  There is an issue if the name
+        ;; is a logical pathname and the host isn't defined.  This
+        ;; will be interpreted as a search-list (undefined), but we
+        ;; won't error out.  This will be a problem if we try to
+        ;; define the logical host with the same name later.
+        (*default-pathname-defaults*
+          (make-pathname :host lisp::*unix-host*)))
     (unless (eq d-source *cached-debug-source*)
       (unless (and *cached-source-stream*
                   (equal (pathname *cached-source-stream*)