@@ -150,6 +150,7 @@ ebml_master_elements! {
150
150
struct ElementReaderContext {
151
151
/// Previous master element
152
152
previous_master : Option < MasterElement > ,
153
+ previous_master_length : u64 ,
153
154
/// Current master element
154
155
current_master : Option < MasterElement > ,
155
156
/// Remaining length of the master element
@@ -169,6 +170,7 @@ impl Default for ElementReaderContext {
169
170
fn default ( ) -> Self {
170
171
Self {
171
172
previous_master : None ,
173
+ previous_master_length : 0 ,
172
174
current_master : None ,
173
175
master_length : 0 ,
174
176
// https://www.rfc-editor.org/rfc/rfc8794.html#name-ebmlmaxidlength-element
@@ -234,6 +236,7 @@ where
234
236
} ;
235
237
236
238
self . ctx . previous_master = self . ctx . current_master ;
239
+ self . ctx . previous_master_length = self . ctx . master_length ;
237
240
self . ctx . current_master = Some ( * master) ;
238
241
self . ctx . master_length = header. size . value ( ) ;
239
242
Ok ( ElementReaderYield :: Master ( (
@@ -254,6 +257,7 @@ where
254
257
pub ( crate ) fn goto_previous_master ( & mut self ) -> Result < ( ) > {
255
258
if let Some ( previous_master) = self . ctx . previous_master {
256
259
self . ctx . current_master = Some ( previous_master) ;
260
+ self . ctx . master_length = self . ctx . previous_master_length ;
257
261
Ok ( ( ) )
258
262
} else {
259
263
decode_err ! ( @BAIL Ebml , "Expected a parent element to be available" )
0 commit comments