* shortcut.c (check_shortcut): Close input file handle before returning.

* path.cc (check_sysfile): Ditto.
(symlink_info::check): Rely on opened file handle being closed by symlink
checking routines.  Set ext_tacked_on when .lnk is detected.
This commit is contained in:
Christopher Faylor 2001-04-22 16:19:27 +00:00
parent da77d416c5
commit 96dc5dd7e5
3 changed files with 31 additions and 22 deletions

View File

@ -1,3 +1,11 @@
Sun Apr 22 12:17:57 2001 Christopher Faylor <cgf@cygnus.com>
* shortcut.c (check_shortcut): Close input file handle before
returning.
* path.cc (check_sysfile): Ditto.
(symlink_info::check): Rely on opened file handle being closed by
symlink checking routines. Set ext_tacked_on when .lnk is detected.
Sat Apr 21 19:26:05 2001 Christopher Faylor <cgf@cygnus.com>
* thread.cc (MTinterface::Init): Remove accidentally checked in code.

View File

@ -2504,6 +2504,8 @@ check_sysfile (const char *path, DWORD fileattr, HANDLE h,
}
syscall_printf ("%d = symlink.check_sysfile (%s, %s) (%p)",
res, path, contents, *pflags);
CloseHandle (h);
return res;
}
@ -2698,29 +2700,29 @@ symlink_info::check (const char *path, const suffix_info *suffixes,
res = -1;
if (h == INVALID_HANDLE_VALUE)
goto file_not_symlink;
else if (sym_check == 1
&& !(res = check_shortcut (suffix.path, fileattr, h,
contents, &error, &pflags)))
switch (sym_check)
{
CloseHandle (h);
case 1:
res = check_shortcut (suffix.path, fileattr, h, contents, &error, &pflags);
if (res)
{
ext_tacked_on = 1;
break;
}
/* If searching for `foo' and then finding a `foo.lnk' which is
no shortcut, return the same as if file not found. */
if (suffix.lnk_match ())
{
fileattr = (DWORD)-1;
continue; /* in case we're going to tack *another* .lnk on this filename. */
}
goto file_not_symlink;
}
else if (sym_check == 2 &&
!(res = check_sysfile (suffix.path, fileattr, h,
contents, &error, &pflags)))
{
CloseHandle (h);
goto file_not_symlink;
}
if (!suffix.lnk_match ())
goto file_not_symlink;
CloseHandle (h);
fileattr = (DWORD) -1;
continue; /* in case we're going to tack *another* .lnk on this filename. */
case 2:
res = check_sysfile (suffix.path, fileattr, h, contents, &error, &pflags);
if (!res)
goto file_not_symlink;
break;
}
break;
}
goto out;

View File

@ -98,7 +98,7 @@ check_shortcut (const char *path, DWORD fileattr, HANDLE h,
goto close_it;
/* Read the files header information. This is used to check for a
Cygwin or U/WIN shortcut or later to check for executable files. */
if (! ReadFile (h, file_header, SHORTCUT_HDR_SIZE, &got, 0))
if (!ReadFile (h, file_header, SHORTCUT_HDR_SIZE, &got, 0))
{
*error = EIO;
goto close_it;
@ -160,8 +160,7 @@ close_it:
psl->lpVtbl->Release(psl);
/* Uninitialize COM library. */
CoUninitialize ();
CloseHandle (h);
return res;
}