Closed Bug 296181 Opened 20 years ago Closed 12 years ago

nsLocalFileWin.cpp nsDirEnumerator::Init NS_ERROR_FAILURE case for PR_OpenDir

Categories

(Core :: XPCOM, defect)

x86
Windows XP
defect
Not set
minor

Tracking

()

RESOLVED INCOMPLETE

People

(Reporter: timeless, Unassigned)

References

()

Details

The comment says // not a directory?

as it happens, i'm in a really strange position.

i have maze
d: is a cdrom on \\workstation
d: is a hard drive on \\devbox

i'm running mozilla on \\workstation
on workstation,
r:
it's a mapped network drive to \\devbox\root
it has a path
r:\mozilla
which is a junction to d:\profile\mozilla

r:\mozilla\all-i686-pc-cygwin\dist\bin\test exists (mostly)
r:\mozilla\all-i686-pc-cygwin\dist\bin\test\components is a junction to
r:\mozilla\all-i686-pc-cygwin\dist\bin\components

now, there's a minor problem with this maze. when viewed from \\devbox, r: is a
subst instead of a net use, and everything it references exists. (everything
works fine on \\devbox, even if you use net use instead of subst, but
theoretically it's slower.)

when viewed from \\workstation, for whatever reason, it's perfectly legal to run
an app from r:\mozilla\all-i686-pc-cygwin\dist\bin\test, and i have done so (the
app in question is mfcembed, but xpcshell or mozilla would work the same). if
you think really hard about this configuration, you'd realize that technically
i'm asking windows to run mfcembed off a cdrom drive (d:) with a path
\profile\mozilla\all-i686-pc-cygwin\dist\bin\test\, as it happens, d: => The
device is not ready. (there's no disk in the drive.) instead, thankfully, when
windows tried to run the app, it asked \\devbox to handle the entire path. i
think (although, i could be wrong) that when windows tries to handle xpcom's
registration requests, which involve visiting the components directory, it
decides to manually parse the pieces of the reparse point, and ends up talking
to the cdrom drive (d:) at which point it gives up.

actual results:
nsDirenumerator::Init returns the generic NS_ERROR_FAILURE indicator and
eventually bad things happen :)

expected results:
I think this code can be changed to give a better error return.

fwiw, filemon indicates:
OPEN (Open Access: All)
r:\mozilla\all-i686-pc-cygwin\dist\bin\test\components\*
NAME INVALID

OPEN (Open Directory Access: All)
r:\mozilla\all-i686-pc-cygwin\dist\bin\test\components\
SUCCESS

DIRECTORY (FileBothDirecoryInformation: *)
r:\mozilla\all-i686-pc-cygwin\dist\bin\test\components\
PATH NOT FOUND

Visual Studio (7.1) in its file>open dialog gives the following error:
r:\mozilla\all-i686-pc-cygwin\dist\bin\test\components refers to a location that
is unavailable. It could be a hard drive on this computer, or on a network.
Check to make sure that the disk is properly inserted, or that you are connected
to the Internet or your network, and then try again. If it still cannot be
located, the information might have been moved to a different location.

anyway, in short, i think NS_ERROR_FILE_NOT_FOUND makes more sense than
NS_ERROR_FAILURE :).
mass reassigning to nobody.
Assignee: dougt → nobody
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → INCOMPLETE
You need to log in before you can comment on or make changes to this bug.