* child_info.h (~child_info_spawn): Check moreinfo->myself_pinfo for
NULL before closing. * spawn.cc (spawn_guts): Don't close moreinfo->myself_pinfo explicitely in case of failing CloseProcess. * fhandler.cc (fhandler_base::open_): Return EISDIR when trying to create a directory. * path.cc (path_conv::check): If input path had a trailing dir separator, tack it on to the native path if directory doesn't exist.
This commit is contained in:
@ -590,7 +590,13 @@ fhandler_base::open (int flags, mode_t mode)
|
||||
create_disposition, create_options, NULL, 0);
|
||||
if (!NT_SUCCESS (status))
|
||||
{
|
||||
__seterrno_from_nt_status (status);
|
||||
/* Trying to open a directory should return EISDIR, not ENOENT. */
|
||||
PUNICODE_STRING upath = pc.get_nt_native_path ();
|
||||
if (status == STATUS_OBJECT_NAME_INVALID
|
||||
&& upath->Buffer[upath->Length / sizeof (WCHAR) - 1] == '\\')
|
||||
set_errno (EISDIR);
|
||||
else
|
||||
__seterrno_from_nt_status (status);
|
||||
if (!nohandle ())
|
||||
goto done;
|
||||
}
|
||||
|
Reference in New Issue
Block a user