diff options
| author | Chris Denton <chris@chrisdenton.dev> | 2025-05-31 21:51:33 +0000 |
|---|---|---|
| committer | Chris Denton <chris@chrisdenton.dev> | 2025-05-31 21:55:26 +0000 |
| commit | 921b6c02aa01b40b9dfea318f4ae7ec1a9811499 (patch) | |
| tree | 337e38b1c671cf5a6ed8520f895954456a32e78c | |
| parent | 4d08223c054cf5a56d9761ca925fd46ffebe7115 (diff) | |
| download | rust-921b6c02aa01b40b9dfea318f4ae7ec1a9811499.tar.gz rust-921b6c02aa01b40b9dfea318f4ae7ec1a9811499.zip | |
If HOME is empty, use the fallback instead
| -rw-r--r-- | library/std/src/env.rs | 2 | ||||
| -rw-r--r-- | library/std/src/sys/pal/unix/os.rs | 5 |
2 files changed, 5 insertions, 2 deletions
diff --git a/library/std/src/env.rs b/library/std/src/env.rs index ce2dc795220..9b0c295ae3a 100644 --- a/library/std/src/env.rs +++ b/library/std/src/env.rs @@ -617,7 +617,7 @@ impl Error for JoinPathsError { /// # Unix /// /// - Returns the value of the 'HOME' environment variable if it is set -/// (including to an empty string). +/// (and not an empty string). /// - Otherwise, it tries to determine the home directory by invoking the `getpwuid_r` function /// using the UID of the current user. An empty home directory field returned from the /// `getpwuid_r` function is considered to be a valid value. diff --git a/library/std/src/sys/pal/unix/os.rs b/library/std/src/sys/pal/unix/os.rs index 48609030aed..633cb299736 100644 --- a/library/std/src/sys/pal/unix/os.rs +++ b/library/std/src/sys/pal/unix/os.rs @@ -633,7 +633,10 @@ pub fn temp_dir() -> PathBuf { } pub fn home_dir() -> Option<PathBuf> { - return crate::env::var_os("HOME").or_else(|| unsafe { fallback() }).map(PathBuf::from); + return crate::env::var_os("HOME") + .filter(|s| !s.is_empty()) + .or_else(|| unsafe { fallback() }) + .map(PathBuf::from); #[cfg(any( target_os = "android", |
