]> git.sesse.net Git - vlc/commitdiff
mkv.cpp: clean the UnGet() feature
authorSteve Lhomme <robux@videolan.org>
Thu, 19 May 2005 21:47:53 +0000 (21:47 +0000)
committerSteve Lhomme <robux@videolan.org>
Thu, 19 May 2005 21:47:53 +0000 (21:47 +0000)
modules/demux/mkv.cpp

index 02cce39512c4d1fda9e9798451706e00d4866e77..47e0e73c0dd932813e69c200b88f3eb2bdf3184e 100644 (file)
@@ -3318,8 +3318,15 @@ EbmlParser::~EbmlParser( void )
 
 void EbmlParser::UnGet( uint64 i_restart_pos )
 {
-    mi_user_level--;
-    m_el[mi_level] = NULL;
+    if ( mi_user_level > mi_level )
+    {
+        while ( mi_user_level != mi_level )
+        {
+            delete m_el[mi_user_level];
+            m_el[mi_user_level] = NULL;
+            mi_user_level--;
+        }
+    }
     m_got = NULL;
     mb_keep = VLC_FALSE;
     m_es->I_O().setFilePointer( i_restart_pos, seek_beginning );
@@ -5258,6 +5265,7 @@ void matroska_segment_c::Seek( mtime_t i_date, mtime_t i_time_offset )
 
             return;
         }
+        ep->Down();
 
         for( i_track = 0; i_track < tracks.size(); i_track++ )
         {