EbmlParser::~EbmlParser( void )
{
- for( int i = 1; i < mi_level; i++ )
+ if( !mi_level )
+ {
+ assert( !mb_keep );
+ delete m_el[1];
+ return;
+ }
+
+ for( int i = 1; i <= mi_level; i++ )
{
if( !mb_keep )
{
if( m_el[mi_level] )
{
- m_el[mi_level]->SkipData( *m_es, m_el[mi_level]->Generic().Context );
+ m_el[mi_level]->SkipData( *m_es, EBML_CONTEXT(m_el[mi_level]) );
if( !mb_keep )
{
if( MKV_IS_ID( m_el[mi_level], KaxBlockVirtual ) )
mb_keep = false;
}
- m_el[mi_level] = m_es->FindNextElement( m_el[mi_level - 1]->Generic().Context, i_ulev, 0xFFFFFFFFL, mb_dummy != 0, 1 );
+ m_el[mi_level] = m_es->FindNextElement( EBML_CONTEXT(m_el[mi_level - 1]), i_ulev, 0xFFFFFFFFL, mb_dummy != 0, 1 );
// mi_remain_size[mi_level] = m_el[mi_level]->GetSize();
if( i_ulev > 0 )
{