Fix repeated parsing in rust yunq.

This commit is contained in:
Drew Galbraith 2025-02-01 14:07:57 -08:00
parent 6f0dfa8719
commit c4dfa624fa
1 changed files with 3 additions and 2 deletions

View File

@ -112,7 +112,7 @@ fn parse_field(field: &Field) -> TokenStream {
let rep_offset = buf.at::<u32>(yunq::message::field_offset(offset, #ind))?;
let rep_len = buf.at::<u32>(yunq::message::field_offset(offset, #ind) + 4)?;
yunq::message::parse_repeated(buf, rep_offset as usize, rep_len as usize)?
yunq::message::parse_repeated(buf, offset + rep_offset as usize, rep_len as usize)?
};
},
Type::I64 => unimplemented!(),
@ -122,7 +122,7 @@ fn parse_field(field: &Field) -> TokenStream {
let rep_offset = buf.at::<u32>(yunq::message::field_offset(offset, #ind))?;
let rep_len = buf.at::<u32>(yunq::message::field_offset(offset, #ind) + 4)?;
yunq::message::parse_repeated_message(buf, rep_offset as usize, rep_len as usize, &caps)?
yunq::message::parse_repeated_message(buf, offset + rep_offset as usize, rep_len as usize, &caps)?
};
},
}
@ -206,6 +206,7 @@ fn generate_parse(message: &Message) -> TokenStream {
Self: Sized,
{
if buf.at::<u32>(offset + 0)? != yunq::message::MESSAGE_IDENT {
mammoth::debug!("Expected IDENT at offest {:#x}, got {:#x}", offset, buf.at::<u32>(offset)?);
return Err(ZError::INVALID_ARGUMENT);
}
// TODO: Parse core size.