Fix repeated parsing in rust yunq.
This commit is contained in:
parent
6f0dfa8719
commit
c4dfa624fa
|
@ -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.
|
||||||
|
|
Loading…
Reference in New Issue