about summary refs log tree commit diff
diff options
context:
space:
mode:
authorOliver Middleton <olliemail27@gmail.com>2019-11-23 02:08:10 +0000
committerOliver Middleton <olliemail27@gmail.com>2019-11-23 02:08:10 +0000
commit05ef20f92203b273d5019cce5ed7907a87420c6a (patch)
tree62609c6d3145b3f77b44ccd1a8c61944ea80831c
parentf1b882b55805c342e46ee4ca3beeef1d1fa2044b (diff)
downloadrust-05ef20f92203b273d5019cce5ed7907a87420c6a.tar.gz
rust-05ef20f92203b273d5019cce5ed7907a87420c6a.zip
rustdoc: Don't panic when failing to write .lock file
It can be treated like any other unexpected IO error.
-rw-r--r--src/librustc_data_structures/flock.rs12
-rw-r--r--src/librustdoc/html/render.rs3
2 files changed, 2 insertions, 13 deletions
diff --git a/src/librustc_data_structures/flock.rs b/src/librustc_data_structures/flock.rs
index b0bd137f2cc..01f25a054f0 100644
--- a/src/librustc_data_structures/flock.rs
+++ b/src/librustc_data_structures/flock.rs
@@ -298,15 +298,3 @@ cfg_if! {
         }
     }
 }
-
-impl Lock {
-    pub fn panicking_new(p: &Path,
-                         wait: bool,
-                         create: bool,
-                         exclusive: bool)
-                         -> Lock {
-        Lock::new(p, wait, create, exclusive).unwrap_or_else(|err| {
-            panic!("could not lock `{}`: {}", p.display(), err);
-        })
-    }
-}
diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs
index bd2a6602e16..4bfcbc52ba1 100644
--- a/src/librustdoc/html/render.rs
+++ b/src/librustdoc/html/render.rs
@@ -546,7 +546,8 @@ fn write_shared(
     // Write out the shared files. Note that these are shared among all rustdoc
     // docs placed in the output directory, so this needs to be a synchronized
     // operation with respect to all other rustdocs running around.
-    let _lock = flock::Lock::panicking_new(&cx.dst.join(".lock"), true, true, true);
+    let lock_file = cx.dst.join(".lock");
+    let _lock = try_err!(flock::Lock::new(&lock_file, true, true, true), &lock_file);
 
     // Add all the static files. These may already exist, but we just
     // overwrite them anyway to make sure that they're fresh and up-to-date.