about summary refs log tree commit diff
path: root/compiler
diff options
context:
space:
mode:
Diffstat (limited to 'compiler')
-rw-r--r--compiler/rustc_codegen_ssa/src/back/archive.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/compiler/rustc_codegen_ssa/src/back/archive.rs b/compiler/rustc_codegen_ssa/src/back/archive.rs
index 8274caa42bc..58558fb8c4b 100644
--- a/compiler/rustc_codegen_ssa/src/back/archive.rs
+++ b/compiler/rustc_codegen_ssa/src/back/archive.rs
@@ -290,11 +290,17 @@ impl<'a> ArArchiveBuilder<'a> {
             false,
         )?;
 
+        let any_entries = !entries.is_empty();
+        drop(entries);
+        // Drop src_archives to unmap all input archives, which is necessary if we want to write the
+        // output archive to the same location as an input archive on Windows.
+        drop(self.src_archives);
+
         archive_tmpfile
             .persist(output)
             .map_err(|err| io_error_context("failed to rename archive file", err.error))?;
 
-        Ok(!entries.is_empty())
+        Ok(any_entries)
     }
 }