diff options
Diffstat (limited to 'winsup/cygwin/path.cc')
-rw-r--r-- | winsup/cygwin/path.cc | 16 |
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: |