summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/path.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/path.cc')
-rw-r--r--winsup/cygwin/path.cc16
1 files changed, 11 insertions, 5 deletions
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc
index 57183da48..3524c0cc0 100644
--- a/winsup/cygwin/path.cc
+++ b/winsup/cygwin/path.cc
@@ -744,13 +744,19 @@ path_conv::check (const char *src, unsigned opt,
{
/* FIXME: Calling build_fhandler here is not the right way to handle this. */
fhandler_virtual *fh = (fhandler_virtual *) build_fh_dev (dev, path_copy);
- virtual_ftype_t file_type = fh->exists ();
- if (file_type == virt_symlink)
+ virtual_ftype_t file_type;
+ if (!fh)
+ file_type = virt_none;
+ else
{
- fh->fill_filebuf ();
- symlen = sym.set (fh->get_filebuf ());
+ file_type = fh->exists ();
+ if (file_type == virt_symlink)
+ {
+ fh->fill_filebuf ();
+ symlen = sym.set (fh->get_filebuf ());
+ }
+ delete fh;
}
- delete fh;
switch (file_type)
{
case virt_directory: