* syscalls.cc (stat_worker): Don't call build_fh_pc with invalid pc.
This commit is contained in:
parent
bcf7308f02
commit
73151c54d5
@ -1,3 +1,7 @@
|
|||||||
|
2007-07-30 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
|
* syscalls.cc (stat_worker): Don't call build_fh_pc with invalid pc.
|
||||||
|
|
||||||
2007-07-29 Christopher Faylor <me+cygwin@cgf.cx>
|
2007-07-29 Christopher Faylor <me+cygwin@cgf.cx>
|
||||||
|
|
||||||
* fhandler.cc (fhandler_base::wait_overlapped): Handle read EOF better
|
* fhandler.cc (fhandler_base::wait_overlapped): Handle read EOF better
|
||||||
|
@ -1202,22 +1202,23 @@ int __stdcall
|
|||||||
stat_worker (path_conv &pc, struct __stat64 *buf)
|
stat_worker (path_conv &pc, struct __stat64 *buf)
|
||||||
{
|
{
|
||||||
int res = -1;
|
int res = -1;
|
||||||
fhandler_base *fh = NULL;
|
|
||||||
|
|
||||||
myfault efault;
|
myfault efault;
|
||||||
if (efault.faulted (EFAULT))
|
if (efault.faulted (EFAULT))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
if (!(fh = build_fh_pc (pc)))
|
if (pc.error)
|
||||||
goto error;
|
|
||||||
|
|
||||||
if (fh->error ())
|
|
||||||
{
|
{
|
||||||
debug_printf ("got %d error from build_fh_name", fh->error ());
|
debug_printf ("got %d error from build_fh_name", pc.error);
|
||||||
set_errno (fh->error ());
|
set_errno (pc.error);
|
||||||
}
|
}
|
||||||
else if (fh->exists ())
|
else if (pc.exists ())
|
||||||
{
|
{
|
||||||
|
fhandler_base *fh;
|
||||||
|
|
||||||
|
if (!(fh = build_fh_pc (pc)))
|
||||||
|
goto error;
|
||||||
|
|
||||||
debug_printf ("(%s, %p, %p), file_attributes %d",
|
debug_printf ("(%s, %p, %p), file_attributes %d",
|
||||||
pc.normalized_path, buf, fh, (DWORD) *fh);
|
pc.normalized_path, buf, fh, (DWORD) *fh);
|
||||||
memset (buf, 0, sizeof (*buf));
|
memset (buf, 0, sizeof (*buf));
|
||||||
@ -1231,14 +1232,14 @@ stat_worker (path_conv &pc, struct __stat64 *buf)
|
|||||||
if (!buf->st_rdev)
|
if (!buf->st_rdev)
|
||||||
buf->st_rdev = buf->st_dev;
|
buf->st_rdev = buf->st_dev;
|
||||||
}
|
}
|
||||||
|
delete fh;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
set_errno (ENOENT);
|
set_errno (ENOENT);
|
||||||
|
|
||||||
delete fh;
|
|
||||||
error:
|
error:
|
||||||
MALLOC_CHECK;
|
MALLOC_CHECK;
|
||||||
syscall_printf ("%d = (%s, %p)", res, pc.normalized_path, buf);
|
syscall_printf ("%d = (%s, %p)", res, pc.normalized_path ?: "", buf);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user