ENSURE-DIRECTORY-PATHNAME breaks logical pathnames

Bug #525538 reported by Robert P. Goldman
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
ASDF
Fix Released
Critical
Robert P. Goldman

Bug Description

ENSURE-DIRECTORY-PATHNAME can turn a valid logical pathname string into an invalid pathname. Here is an example:

Here is a transcript (from ACL) showing lossage with ENSURE-DIRECTORY-PATHNAME:

[1] ASDF(26): (probe-file "home:lisp;asdf;")
#P"/Users/rpg/lisp/asdf/"
[1] ASDF(27): (probe-file (ensure-directory-pathname (eval "home:lisp;asdf;")))
NIL
[1] ASDF(28): (ensure-directory-pathname (eval "home:lisp;asdf;"))
#P"home:lisp;asdf;/"
[1] ASDF(29): (probe-file (eval "home:lisp;asdf;"))
#P"/Users/rpg/lisp/asdf/"
[1] ASDF(30):

Same undesirable behavior on SBCL:

ASDF> (ensure-directory-pathname (eval "home:lisp;asdf;"))
#P"home:lisp;asdf;/"

We must check the pathname and attempt to determine if it is a logical pathname before we go slamming a "/" on the end of it.

This is a regression --- ASDF used to handle logical pathnames in the central registry correctly.

Revision history for this message
Robert P. Goldman (rpgoldman) wrote :

Patch committed, but not extensively tested. We should probably have a small test suite for ENSURE-DIRECTORY-PATHNAME.

Changed in asdf:
assignee: nobody → Robert P. Goldman (rpgoldman)
importance: Undecided → Critical
status: New → Fix Committed
Changed in asdf:
milestone: none → version2
Revision history for this message
Faré (fahree) wrote :

I fixed this by essentially reverting to some ugly but more portable previous ASDF 1 code in 1.653.

Changed in asdf:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.