[Openmcl-devel] Fwd: [Bug 636506] Re: (truename #P"ccl:") fails when *default-pathname-defaults* is not empty

Gary Byers gb at clozure.com
Mon Sep 13 11:40:24 UTC 2010



On Sun, 12 Sep 2010, Ron Garret wrote:

>
> On Sep 12, 2010, at 7:21 PM, Gary Byers wrote:
>
>>
>>
>> On Sun, 12 Sep 2010, Ron Garret wrote:
>>>      From: Faré <636506 at bugs.launchpad.net>
>>> Date: September 12, 2010 12:54:41 PM PDT
>>> To: ron at flownet.com
>>> Subject: [Bug 636506] Re: (truename #P"ccl:") fails when *default-pathname-defaults* is not empty
>>> Reply-To: Bug 636506 <636506 at bugs.launchpad.net>
>>> Ouch. Committed 2.129 as a fix. I hope I won't be the one to release
>>> 2.009, though. I don't know what CCL does, but it's probably a CCL bug,
>>> too.
>>>
>>
>> I think that the bug is that (PATHNAME-DIRECTORY "ccl:") returns NIL
>> (rather than (:ABSOLUTE)), and this in turn leads to the unfortunate
>> MERGE-PATHNAMES result.  The bug's in the namestring parsing code,
>> so another workaround would be
>>
>> (truename (make-pathname :defaults #p"ccl:"))
>>
>
> I think this may be the problem:
>
> (defun pathname-directory-sstr (sstr start end host)
>  (if (and (eq host :unspecific)
>           (> end start)
>           (eql (schar sstr start) #\~))
>    (setq sstr (tilde-expand (subseq sstr start end))
>          start 0
>          end (length sstr)))
>  (let ((pos (%path-mem-last (if (eq host :unspecific) "/" ";") sstr start end)))
>    (if pos
>      (values
>       (%directory-string-list sstr start (setq pos (%i+ pos 1)) host)
>       pos)
>      (values (and (neq host :unspecific)
> =======>	  (neq start end)
> 		   '(:absolute))
> 	      start))))
>
> Commenting out the indicated line seems to fix the problem, though I have not tested it thoroughly.
>
> rg
>

That's what I think, too.  Thanks; will try to test and fix sometime today.


More information about the Openmcl-devel mailing list