about summary refs log tree commit diff
diff options
context:
space:
mode:
authorYoshiki Matsuda <myskjp@gmail.com>2022-05-08 14:19:04 +0900
committerYoshiki Matsuda <myskjp@gmail.com>2022-07-02 22:54:37 +0900
commit7eb64b4901f43d01aa6bd9a39ef299c0380fd600 (patch)
treea06ceb5eaa316fdbfcd899a3cd20c79a031a4bca
parentc57d7788729f32e74966f67eea582ec7ec75a133 (diff)
downloadrust-7eb64b4901f43d01aa6bd9a39ef299c0380fd600.tar.gz
rust-7eb64b4901f43d01aa6bd9a39ef299c0380fd600.zip
flush and assert when counting zero bytes
-rw-r--r--compiler/rustc_metadata/src/rmeta/encoder.rs6
1 files changed, 5 insertions, 1 deletions
diff --git a/compiler/rustc_metadata/src/rmeta/encoder.rs b/compiler/rustc_metadata/src/rmeta/encoder.rs
index f3853255f7b..3ae4fbb70a5 100644
--- a/compiler/rustc_metadata/src/rmeta/encoder.rs
+++ b/compiler/rustc_metadata/src/rmeta/encoder.rs
@@ -733,14 +733,18 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
         assert_eq!(total_bytes, computed_total_bytes);
 
         if tcx.sess.meta_stats() {
+            self.opaque.flush().unwrap();
+
+            let pos_before_rewind = self.opaque.file().stream_position().unwrap();
             let mut zero_bytes = 0;
-            self.opaque.file().seek(std::io::SeekFrom::Start(0)).unwrap();
+            self.opaque.file().rewind().unwrap();
             let file = std::io::BufReader::new(self.opaque.file());
             for e in file.bytes() {
                 if e.unwrap() == 0 {
                     zero_bytes += 1;
                 }
             }
+            assert_eq!(self.opaque.file().stream_position().unwrap(), pos_before_rewind);
 
             let perc = |bytes| (bytes * 100) as f64 / total_bytes as f64;
             let p = |label, bytes| {