Skip to content

Commit a9c3eb9

Browse files
committed
Bind header+u32 to variable for clearer math
1 parent 7df53d5 commit a9c3eb9

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

compiler/rustc_metadata/src/locator.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -789,6 +789,9 @@ fn get_metadata_section<'p>(
789789
loader.get_dylib_metadata(target, filename).map_err(MetadataError::LoadFailure)?;
790790
// The header is uncompressed
791791
let header_len = METADATA_HEADER.len();
792+
let u32_len = core::mem::size_of::<u32>();
793+
let data_start = header_len + u32_len;
794+
792795
debug!("checking {} bytes of metadata-version stamp", header_len);
793796
let header = &buf[..cmp::min(header_len, buf.len())];
794797
if header != METADATA_HEADER {
@@ -799,14 +802,13 @@ fn get_metadata_section<'p>(
799802
}
800803

801804
// Length of the compressed stream - this allows linkers to pad the section if they want
802-
let u32_len = core::mem::size_of::<u32>();
803-
let Ok(len_bytes) = <[u8; 4]>::try_from(&buf[header_len..cmp::min(header_len + u32_len, buf.len())]) else {
805+
let Ok(len_bytes) = <[u8; 4]>::try_from(&buf[header_len..cmp::min(data_start, buf.len())]) else {
804806
return Err(MetadataError::LoadFailure("invalid metadata length found".to_string()));
805807
};
806808
let compressed_len = u32::from_be_bytes(len_bytes) as usize;
807809

808810
// Header is okay -> inflate the actual metadata
809-
let compressed_bytes = &buf[(header_len + u32_len)..(compressed_len + header_len + u32_len)];
811+
let compressed_bytes = &buf[data_start..(data_start + compressed_len)];
810812
debug!("inflating {} bytes of compressed metadata", compressed_bytes.len());
811813
// Assume the decompressed data will be at least the size of the compressed data, so we
812814
// don't have to grow the buffer as much.

0 commit comments

Comments
 (0)