about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustc_data_structures/sync.rs14
-rw-r--r--src/librustc_metadata/decoder.rs4
2 files changed, 9 insertions, 9 deletions
diff --git a/src/librustc_data_structures/sync.rs b/src/librustc_data_structures/sync.rs
index f09474ff4d3..d111471f53d 100644
--- a/src/librustc_data_structures/sync.rs
+++ b/src/librustc_data_structures/sync.rs
@@ -497,13 +497,15 @@ impl<T> Once<T> {
     /// If the value was already initialized the closure is not called and `false` is returned,
     /// otherwise if the value from the closure initializes the inner value, `true` is returned
     #[inline]
-    pub fn init_locking<F: FnOnce() -> T>(&self, f: F) -> bool {
-        let mut lock = self.0.lock();
-        if lock.is_some() {
-            return false;
+    pub fn init_locking<F: FnOnce() -> T>(&self, f: F) -> &T {
+        {
+            let mut lock = self.0.lock();
+            if lock.is_none() {
+                *lock = Some(f());
+            }
         }
-        *lock = Some(f());
-        true
+
+        self.borrow()
     }
 
     /// Tries to initialize the inner value by calling the closure without ensuring that no-one
diff --git a/src/librustc_metadata/decoder.rs b/src/librustc_metadata/decoder.rs
index b1110ce80a8..c5954e1ea1d 100644
--- a/src/librustc_metadata/decoder.rs
+++ b/src/librustc_metadata/decoder.rs
@@ -1351,9 +1351,7 @@ impl<'a, 'tcx> CrateMetadata {
                     translated_source_file: local_version,
                 }
             }).collect()
-        });
-
-        self.source_map_import_info.borrow()
+        })
     }
 
     /// Get the `DepNodeIndex` corresponding this crate. The result of this