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 @@ fn build_inner(self, output: &Path) -> io::Result { 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) } }