@@ -150,6 +150,7 @@ ebml_master_elements! {
150150struct 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