Quoting Marco Antoniotti (marcoxa@cs.nyu.edu):
Just to be nitpicking. Merging *d-p-d* (which I assume to be *DEFAULT-PATHNAME-DEFAULTS*) isn't guaranteed to work. *d-p-d* can be a relative pathname. Wouldn't that cause the same problem?
Well, ISTR that CMUCL starts with an empty *default-pathname-defaults*, so I recognize that CMUCL users might indeed still have this problem even with the patch.
And since the spec is terribly vague on this issue (like most issues relating to pathnames), the implementation choice made by CMUCL maintainers is technically correct.
However, - the spec does say that *default-pathname-defaults* is "typically in the working directory that was current when Common Lisp was started up". - it's the only approximation of the concept of a "working directory" I am aware of in portable Common Lisp and many Lisps implement it like that. - if the implementation chooses not to set it to the working directory, users can easily fix that by setting or binding it themselves. (Or, of course, by passing an absolute pathname to cxml:parse-file in the first place...)
So using it seems like a reasonable compromise to me, and improves the situation on some Lisps while not making it worse on the others.
If there is a better way to fix this I'm open to suggestions.
d.