Bug 3087668 seems to occur because the trailing backslash in (ext:probe-pathname "C:\\") is stripped off before real_path, which means it gets interpreted as a relative path. Additionally, FindFirstFile fails when passed a path with a trailing backslash. The attached patch appears to fix this problem; I'm not terribly familiar with the source so hopefully it's appropriate.
Sorry, my original patch didn't include a ChangeLog entry, and included a few errant tabs.
thanks for the patch.
unfortunately, it breaks clisp on unix.
Doh. I'm sorry, I hadn't realized the code paths I was changing weren't all win32. I've included an #ifdef in the patch, but at this point you probably know a cleaner solution than I.
Thanks for the patch and investigation, Julian. I'll se how to fix the bug, probably real_path shouldn't add the slash. As far as I can see, (probe-pathname "C:\\") should be equivalent to (probe-pathname "C:") and mean "drive C exists", correct me if I wrong.
Arseny, I disagree,
c: means the default directory on c drive c
c:/ means the top-level directory on drive c
Yep, I missed the return values - thought it's a predicate. I meant that if default directory exists then the drive exists and vice versa. But it's not true - I just checked.
Accepted as a basis for bigger patch.