* dtable.cc (build_fh_name): Return pointer to a 'nodevice' rather than a NULL

pointer or suffer SEGVs with invalid paths.
This commit is contained in:
Christopher Faylor 2003-09-26 03:26:44 +00:00
parent 6c68fbbc61
commit 912f81352f
2 changed files with 7 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2003-09-25 Christopher Faylor <cgf@redhat.com>
* dtable.cc (build_fh_name): Return pointer to a 'nodevice' rather than
a NULL pointer or suffer SEGVs with invalid paths.
2003-09-25 Christopher Faylor <cgf@redhat.com> 2003-09-25 Christopher Faylor <cgf@redhat.com>
* fork.cc (fork_parent): Detect failed pinfo constructor. * fork.cc (fork_parent): Detect failed pinfo constructor.

View File

@ -287,6 +287,7 @@ dtable::init_std_file_from_handle (int fd, HANDLE handle)
} }
} }
#define cnew(name) new ((void *) ccalloc (HEAP_FHANDLER, 1, sizeof (name))) name
fhandler_base * fhandler_base *
build_fh_name (const char *name, HANDLE h, unsigned opt, suffix_info *si) build_fh_name (const char *name, HANDLE h, unsigned opt, suffix_info *si)
{ {
@ -294,7 +295,7 @@ build_fh_name (const char *name, HANDLE h, unsigned opt, suffix_info *si)
if (pc.error) if (pc.error)
{ {
set_errno (pc.error); set_errno (pc.error);
return NULL; return cnew (fhandler_nodevice) ();
} }
if (!pc.exists () && h) if (!pc.exists () && h)
@ -325,7 +326,6 @@ build_fh_dev (const device& dev, const char *unix_name)
return build_fh_pc (pc); return build_fh_pc (pc);
} }
#define cnew(name) new ((void *) ccalloc (HEAP_FHANDLER, 1, sizeof (name))) name
fhandler_base * fhandler_base *
build_fh_pc (path_conv& pc) build_fh_pc (path_conv& pc)
{ {