[PATCH v2 8/8] fhandler_disk_file.cc: Use path_conv's IndexNumber
Corinna Vinschen
corinna-cygwin@cygwin.com
Tue Jan 26 12:15:16 GMT 2021
On Jan 20 17:10, Ben Wijen wrote:
> path_conv already knows the IndexNumber, so just use it.
Yeah, this looks like a vestige from before the time we switched to
FILE_ALL_INFORMATION.
>
> This commit also fixes the potential handle leak.
> ---
> winsup/cygwin/fhandler_disk_file.cc | 24 ++++++------------------
> 1 file changed, 6 insertions(+), 18 deletions(-)
>
> diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc
> index fe04f832b..39f914a59 100644
> --- a/winsup/cygwin/fhandler_disk_file.cc
> +++ b/winsup/cygwin/fhandler_disk_file.cc
> @@ -2029,9 +2029,6 @@ readdir_get_ino (const char *path, bool dot_dot)
> {
> char *fname;
> struct stat st;
> - HANDLE hdl;
> - OBJECT_ATTRIBUTES attr;
> - IO_STATUS_BLOCK io;
> ino_t ino = 0;
>
> if (dot_dot)
> @@ -2044,26 +2041,17 @@ readdir_get_ino (const char *path, bool dot_dot)
> path = fname;
> }
> path_conv pc (path, PC_SYM_NOFOLLOW | PC_POSIX | PC_KEEP_HANDLE);
Given that this function doesn't need a handle anymore, PC_KEEP_HANDLE
can go away.
> - if (pc.isspecial ())
> + if (pc.isgood_inode (pc.fai ()->InternalInformation.IndexNumber.QuadPart))
> + ino = pc.fai ()->InternalInformation.IndexNumber.QuadPart;
This ignores the fact that the file could be on an NFS filesystem.
Rather than using pc.fai ()->InternalInformation.IndexNumber.QuadPart,
this call should use pc.get_ino ().
Thanks,
Corinna
More information about the Cygwin-patches
mailing list