* exceptions.cc (open_stackdumpfile): Don't try to open file if we

have no filesystem based CWD.  Add comment.
	* path.cc (cwdstuff::set): Set CWD handle to NULL if CWD is a virtual
	path.  Simplify matching comment.
This commit is contained in:
Corinna Vinschen 2010-08-18 14:22:07 +00:00
parent d15ed91c04
commit 75a3b85877
3 changed files with 16 additions and 13 deletions

View File

@ -1,3 +1,10 @@
2010-08-18 Corinna Vinschen <corinna@vinschen.de>
* exceptions.cc (open_stackdumpfile): Don't try to open file if we
have no filesystem based CWD. Add comment.
* path.cc (cwdstuff::set): Set CWD handle to NULL if CWD is a virtual
path. Simplify matching comment.
2010-08-18 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_base::fstat_helper): Set st_rdev

View File

@ -128,7 +128,10 @@ error_start_init (const char *buf)
static void
open_stackdumpfile ()
{
if (myself->progname[0])
/* If we have no executable name, or if the CWD handle is NULL,
which means, the CWD is a virtual path, don't even try to open
a stackdump file. */
if (myself->progname[0] && cygheap->cwd.get_handle ())
{
const WCHAR *p;
/* write to progname.stackdump if possible */

View File

@ -3321,9 +3321,9 @@ cwdstuff::set (path_conv *nat_cwd, const char *posix_cwd)
/* Open a directory handle with FILE_OPEN_FOR_BACKUP_INTENT and with all
sharing flags set. The handle is right now used in exceptions.cc only,
but that might change in future. */
HANDLE h = NULL;
if (!virtual_path)
{
HANDLE h;
NTSTATUS status;
IO_STATUS_BLOCK io;
OBJECT_ATTRIBUTES attr;
@ -3363,18 +3363,11 @@ cwdstuff::set (path_conv *nat_cwd, const char *posix_cwd)
__seterrno_from_nt_status (status);
return -1;
}
/* Note that we don't set the dir handle to NULL for virtual paths.
The handle is used to generate a stackdump file. Since we can't
create a stackdump in a virtual path, we have at least *some*
directory handle to generate the stackdump in.
However, note that we have to make sure that we don't use the handle
wrongly as soon as we start to use it in other cases as well. */
HANDLE old_dir = dir;
dir = h;
if (old_dir)
NtClose (old_dir);
}
/* Set new handle. It's only used when creating stackdumps so far. */
if (dir)
NtClose (dir);
dir = h;
if (!nat_cwd)
{