diff --git a/src/uu/sort/src/tmp_dir.rs b/src/uu/sort/src/tmp_dir.rs index 0e5bd1f34d4..81e725749bc 100644 --- a/src/uu/sort/src/tmp_dir.rs +++ b/src/uu/sort/src/tmp_dir.rs @@ -180,6 +180,15 @@ impl Drop for TmpDirWrapper { guard.lock = None; guard.path = None; } + drop(guard); + + // Explicitly attempt cleanup before TempDir's Drop runs silently. + // TempDir::drop uses `let _ = remove_dir_all()` which silently + // ignores errors, potentially leaking the directory. + #[cfg(not(any(target_os = "redox", target_os = "wasi")))] + if let Some(ref temp_dir) = self.temp_dir { + let _ = remove_tmp_dir(temp_dir.path()); + } } }