about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Howell <michael@notriddle.com>2023-12-14 19:31:29 -0700
committerMichael Howell <michael@notriddle.com>2023-12-14 20:08:53 -0700
commit09c8fd35ac1e24416207feaae04a499768994498 (patch)
tree52aeaf2bd68c6668677290c123ed5990bca85f0f
parentde686cbc65478db53e3d51c52497685e852cc092 (diff)
downloadrust-09c8fd35ac1e24416207feaae04a499768994498.tar.gz
rust-09c8fd35ac1e24416207feaae04a499768994498.zip
rustdoc-search: fix a race condition in search index loading
`var` declare it in the global scope, and `const` does not.
It needs to be declared in global scope.
-rw-r--r--src/librustdoc/html/render/write_shared.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/librustdoc/html/render/write_shared.rs b/src/librustdoc/html/render/write_shared.rs
index 4b5d1c0d87c..c4a6e920031 100644
--- a/src/librustdoc/html/render/write_shared.rs
+++ b/src/librustdoc/html/render/write_shared.rs
@@ -297,7 +297,10 @@ pub(super) fn write_shared(
                     .replace("\\\"", "\\\\\"")
             ));
             all_sources.sort();
-            let mut v = String::from("const srcIndex = new Map(JSON.parse('[\\\n");
+            // This needs to be `var`, not `const`.
+            // This variable needs declared in the current global scope so that if
+            // src-script.js loads first, it can pick it up.
+            let mut v = String::from("var srcIndex = new Map(JSON.parse('[\\\n");
             v.push_str(&all_sources.join(",\\\n"));
             v.push_str("\\\n]'));\ncreateSrcSidebar();\n");
             Ok(v.into_bytes())
@@ -317,7 +320,10 @@ pub(super) fn write_shared(
     // with rustdoc running in parallel.
     all_indexes.sort();
     write_invocation_specific("search-index.js", &|| {
-        let mut v = String::from("const searchIndex = new Map(JSON.parse('[\\\n");
+        // This needs to be `var`, not `const`.
+        // This variable needs declared in the current global scope so that if
+        // search.js loads first, it can pick it up.
+        let mut v = String::from("var searchIndex = new Map(JSON.parse('[\\\n");
         v.push_str(&all_indexes.join(",\\\n"));
         v.push_str(
             r#"\