* dtable.cc (cygwin_attach_handle_to_fd): Defend against NULL return from
build_fh_*. (dtable::init_std_file_from_handle): Ditto. * mmap.cc (mmap_record::alloc_fh): Ditto. * path.cc (path_conv::check): Ditto.
This commit is contained in:
parent
00ceaad134
commit
e5b7e4d1c7
|
@ -1,3 +1,11 @@
|
|||
2012-04-07 Christopher Faylor <me.cygwin2012@cgf.cx>
|
||||
|
||||
* dtable.cc (cygwin_attach_handle_to_fd): Defend against NULL return
|
||||
from build_fh_*.
|
||||
(dtable::init_std_file_from_handle): Ditto.
|
||||
* mmap.cc (mmap_record::alloc_fh): Ditto.
|
||||
* path.cc (path_conv::check): Ditto.
|
||||
|
||||
2012-04-06 Christopher Faylor <me.cygwin2012@cgf.cx>
|
||||
|
||||
* fhandler.h (fhandler_base::nohandle): Implement "by hand" rather than
|
||||
|
|
|
@ -256,6 +256,8 @@ cygwin_attach_handle_to_fd (char *name, int fd, HANDLE handle, mode_t bin,
|
|||
if (fd == -1)
|
||||
fd = cygheap->fdtab.find_unused_handle ();
|
||||
fhandler_base *fh = build_fh_name (name);
|
||||
if (!fh)
|
||||
return -1;
|
||||
cygheap->fdtab[fd] = fh;
|
||||
cygheap->fdtab[fd]->refcnt (1);
|
||||
fh->init (handle, myaccess, bin ?: fh->pc_binmode ());
|
||||
|
@ -337,6 +339,9 @@ dtable::init_std_file_from_handle (int fd, HANDLE handle)
|
|||
else
|
||||
fh = build_fh_name (name);
|
||||
|
||||
if (!fh)
|
||||
return;
|
||||
|
||||
if (name[0])
|
||||
{
|
||||
bin = fh->pc_binmode ();
|
||||
|
|
|
@ -526,7 +526,8 @@ mmap_record::alloc_fh ()
|
|||
fdev.name = fdev.native = "";
|
||||
fdev.parse (get_device ());
|
||||
fhandler_base *fh = build_fh_dev (fdev);
|
||||
fh->set_access (get_openflags ());
|
||||
if (fh)
|
||||
fh->set_access (get_openflags ());
|
||||
return fh;
|
||||
}
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue