MCPcopy Create free account
hub / github.com/encounter/objdiff / slice_at

Function slice_at

objdiff-core/src/obj/mdebug.rs:203–223  ·  view source on GitHub ↗
(
    data: &[u8],
    offset: u32,
    size: u32,
    section_file_offset: Option<usize>,
)

Source from the content-addressed store, hash-verified

201}
202
203fn slice_at(
204 data: &[u8],
205 offset: u32,
206 size: u32,
207 section_file_offset: Option<usize>,
208) -> Result<&[u8]> {
209 let size = size as usize;
210 if size == 0 {
211 ensure!(
212 resolve_offset(offset, data.len(), section_file_offset).is_some(),
213 "offset outside of .mdebug section"
214 );
215 return Ok(&data[0..0]);
216 }
217 let Some(offset) = resolve_offset(offset, data.len(), section_file_offset) else {
218 bail!("offset outside of .mdebug section");
219 };
220 let end = offset.checked_add(size).context("range overflow")?;
221 ensure!(end <= data.len(), "range exceeds .mdebug size");
222 Ok(&data[offset..end])
223}
224
225fn resolve_offset(
226 offset: u32,

Callers 1

parse_line_info_mdebugFunction · 0.85

Calls 1

resolve_offsetFunction · 0.85

Tested by

no test coverage detected