(find_mount_point): Don't let free clobber errno upon failed chdir

This commit is contained in:
Jim Meyering
2003-07-12 15:44:14 +00:00
parent 354996bc09
commit 21f65c951c
+9 -6
View File
@@ -433,7 +433,8 @@ show_dev (const char *disk, const char *mount_point, const char *fstype,
}
/* Return the root mountpoint of the filesystem on which FILE exists, in
malloced storage. FILE_STAT should be the result of stating FILE. */
malloced storage. FILE_STAT should be the result of stating FILE.
Return NULL if unable to determine the mount point. */
static char *
find_mount_point (const char *file, const struct stat *file_stat)
{
@@ -455,11 +456,13 @@ find_mount_point (const char *file, const struct stat *file_stat)
/* FILE is some other kind of file, we need to use its directory. */
{
char *dir = dir_name (file);
int rv = chdir (dir);
free (dir);
if (rv < 0)
return NULL;
if (chdir (dir) < 0)
{
int saved_errno = errno;
free (dir);
errno = saved_errno;
return NULL;
}
if (stat (".", &last_stat) < 0)
goto done;