* 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:
		@@ -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.
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user