mindustry logic execution, map- and schematic- parsing and rendering
Diffstat (limited to 'src/data/mod.rs')
| -rw-r--r-- | src/data/mod.rs | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/src/data/mod.rs b/src/data/mod.rs index 85cbbd6..0cd1d66 100644 --- a/src/data/mod.rs +++ b/src/data/mod.rs @@ -139,28 +139,26 @@ impl<'d> DataRead<'d> { } else { self.read_u16()? as usize }; - self.read = 0; + let rb4 = self.read; let r = f(self); + let read = self.read - rb4; match r { Err(e) => { // skip this chunk - assert!( - len >= self.read, - "overread; supposed to read {len}; read {}", - self.read - ); - let n = len - self.read; + assert!(len >= read, "overread; supposed to read {len}; read {read}"); + let n = len - read; if n != 0 { #[cfg(debug_assertions)] - println!( - "supposed to read {len}; read {} - skipping excess", - self.read - ); + println!("supposed to read {len}; read {read} - skipping excess"); self.skip(n)?; }; Err(e) } - Ok(_) => Ok(()), + Ok(_) => { + debug_assert!(len >= read, "overread; supposed to read {len}; read {read}"); + debug_assert!((len - read) == 0, "supposed to read {len}; read {read}"); + Ok(()) + } } } |