about summary refs log tree commit diff
path: root/library
diff options
context:
space:
mode:
authorJacob Pratt <jacob@jhpratt.dev>2025-07-26 22:42:32 -0400
committerGitHub <noreply@github.com>2025-07-26 22:42:32 -0400
commit85e5100ad44b7ce4001394dc6bc713d97b86c101 (patch)
tree586bfd8a06578d9603039ca837ac5c6cb8f3edb1 /library
parent283a0746a244a88503fed61844f44df925ccdbb6 (diff)
parent921b6c02aa01b40b9dfea318f4ae7ec1a9811499 (diff)
downloadrust-85e5100ad44b7ce4001394dc6bc713d97b86c101.tar.gz
rust-85e5100ad44b7ce4001394dc6bc713d97b86c101.zip
Rollup merge of #141840 - ChrisDenton:noempty, r=ChrisDenton
If `HOME` is empty, use the fallback instead

This is a minor change in the `home_dir` api. An empty path is never (or should never be) valid so if the `HOME` environment variable is empty then let's use the fallback instead.

r? libs-api
Diffstat (limited to 'library')
-rw-r--r--library/std/src/env.rs2
-rw-r--r--library/std/src/sys/pal/unix/os.rs5
2 files changed, 5 insertions, 2 deletions
diff --git a/library/std/src/env.rs b/library/std/src/env.rs
index 6d7d576b32a..9f17ff76445 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 850bdfdf5b5..0e68313cc3e 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",