about summary refs log tree commit diff
path: root/compiler/rustc_metadata/src
diff options
context:
space:
mode:
authorYoshiki Matsuda <myskjp@gmail.com>2022-05-02 19:59:30 +0900
committerYoshiki Matsuda <myskjp@gmail.com>2022-07-02 22:54:37 +0900
commit8d35ff16d2c63d9dc9d9d98d9ebcda4840b08d4b (patch)
tree590d9634420a7c6bcc1b1cd371a033d9b2bdb7b4 /compiler/rustc_metadata/src
parente11dd802c1aa07ed61de2fdc8a7c79bae1e99f0a (diff)
downloadrust-8d35ff16d2c63d9dc9d9d98d9ebcda4840b08d4b.tar.gz
rust-8d35ff16d2c63d9dc9d9d98d9ebcda4840b08d4b.zip
insert dummy 4 bytes to avoid the breaking change
Diffstat (limited to 'compiler/rustc_metadata/src')
-rw-r--r--compiler/rustc_metadata/src/rmeta/decoder.rs2
-rw-r--r--compiler/rustc_metadata/src/rmeta/encoder.rs5
2 files changed, 6 insertions, 1 deletions
diff --git a/compiler/rustc_metadata/src/rmeta/decoder.rs b/compiler/rustc_metadata/src/rmeta/decoder.rs
index 37ccf592aa5..990ff9e6b40 100644
--- a/compiler/rustc_metadata/src/rmeta/decoder.rs
+++ b/compiler/rustc_metadata/src/rmeta/decoder.rs
@@ -682,7 +682,7 @@ impl MetadataBlob {
     }
 
     pub(crate) fn get_rustc_version(&self) -> String {
-        LazyValue::<String>::from_position(NonZeroUsize::new(METADATA_HEADER.len()).unwrap())
+        LazyValue::<String>::from_position(NonZeroUsize::new(METADATA_HEADER.len() + 4).unwrap())
             .decode(self)
     }
 
diff --git a/compiler/rustc_metadata/src/rmeta/encoder.rs b/compiler/rustc_metadata/src/rmeta/encoder.rs
index 71642305504..d7991e6a660 100644
--- a/compiler/rustc_metadata/src/rmeta/encoder.rs
+++ b/compiler/rustc_metadata/src/rmeta/encoder.rs
@@ -2221,6 +2221,11 @@ fn encode_metadata_impl(tcx: TyCtxt<'_>, path: impl AsRef<Path>) {
         .unwrap_or_else(|err| tcx.sess.fatal(&format!("failed to create file encoder: {}", err)));
     encoder.emit_raw_bytes(METADATA_HEADER);
 
+    // Though we had holded the root position historically in this place, we moved it to the end
+    // of all emitted bytes by #96544. Therefore, now these 4 bytes are just a dummy to avoid the
+    // breaking change.
+    encoder.emit_raw_bytes(&[0, 0, 0, 0]).unwrap();
+
     let source_map_files = tcx.sess.source_map().files();
     let source_file_cache = (source_map_files[0].clone(), 0);
     let required_source_files = Some(GrowableBitSet::with_capacity(source_map_files.len()));