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_offset = buf.at::<u32>(yunq::message::field_offset(offset, #ind))?;
let rep_len = buf.at::<u32>(yunq::message::field_offset(offset, #ind) + 4)?; 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!(), 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_offset = buf.at::<u32>(yunq::message::field_offset(offset, #ind))?;
let rep_len = buf.at::<u32>(yunq::message::field_offset(offset, #ind) + 4)?; 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, Self: Sized,
{ {
if buf.at::<u32>(offset + 0)? != yunq::message::MESSAGE_IDENT { 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); return Err(ZError::INVALID_ARGUMENT);
} }
// TODO: Parse core size. // TODO: Parse core size.