Skip to content

Commit 1caa0b8

Browse files
committed
EBML: Store previous master element's size
Signed-off-by: Serial <69764315+Serial-ATA@users.noreply.github.com>
1 parent 1d31399 commit 1caa0b8

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

src/ebml/element_reader.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ ebml_master_elements! {
150150
struct ElementReaderContext {
151151
/// Previous master element
152152
previous_master: Option<MasterElement>,
153+
previous_master_length: u64,
153154
/// Current master element
154155
current_master: Option<MasterElement>,
155156
/// Remaining length of the master element
@@ -169,6 +170,7 @@ impl Default for ElementReaderContext {
169170
fn default() -> Self {
170171
Self {
171172
previous_master: None,
173+
previous_master_length: 0,
172174
current_master: None,
173175
master_length: 0,
174176
// https://www.rfc-editor.org/rfc/rfc8794.html#name-ebmlmaxidlength-element
@@ -234,6 +236,7 @@ where
234236
};
235237

236238
self.ctx.previous_master = self.ctx.current_master;
239+
self.ctx.previous_master_length = self.ctx.master_length;
237240
self.ctx.current_master = Some(*master);
238241
self.ctx.master_length = header.size.value();
239242
Ok(ElementReaderYield::Master((
@@ -254,6 +257,7 @@ where
254257
pub(crate) fn goto_previous_master(&mut self) -> Result<()> {
255258
if let Some(previous_master) = self.ctx.previous_master {
256259
self.ctx.current_master = Some(previous_master);
260+
self.ctx.master_length = self.ctx.previous_master_length;
257261
Ok(())
258262
} else {
259263
decode_err!(@BAIL Ebml, "Expected a parent element to be available")

0 commit comments

Comments
 (0)