From c4dfa624fa3ea128572f6cfcda56b559143d7796 Mon Sep 17 00:00:00 2001 From: Drew Galbraith Date: Sat, 1 Feb 2025 14:07:57 -0800 Subject: [PATCH] Fix repeated parsing in rust yunq. --- yunq/rust/src/codegen.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/yunq/rust/src/codegen.rs b/yunq/rust/src/codegen.rs index d80ef67..237414b 100644 --- a/yunq/rust/src/codegen.rs +++ b/yunq/rust/src/codegen.rs @@ -112,7 +112,7 @@ fn parse_field(field: &Field) -> TokenStream { let rep_offset = buf.at::(yunq::message::field_offset(offset, #ind))?; let rep_len = buf.at::(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::(yunq::message::field_offset(offset, #ind))?; let rep_len = buf.at::(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::(offset + 0)? != yunq::message::MESSAGE_IDENT { + mammoth::debug!("Expected IDENT at offest {:#x}, got {:#x}", offset, buf.at::(offset)?); return Err(ZError::INVALID_ARGUMENT); } // TODO: Parse core size.