diff --git a/mkvparser.cpp b/mkvparser.cpp index e48343f..01c932e 100644 --- a/mkvparser.cpp +++ b/mkvparser.cpp @@ -7962,7 +7962,6 @@ Cluster::GetEntry( } const long long tc_ = pBlock->GetTimeCode(this); - assert(tc_ >= 0); if (tc_ < tc) { @@ -8081,7 +8080,7 @@ SimpleBlock::SimpleBlock( long SimpleBlock::Parse() { - return m_block.Parse(m_pCluster->m_pSegment->m_pReader); + return m_block.Parse(m_pCluster); } @@ -8116,7 +8115,7 @@ BlockGroup::BlockGroup( long BlockGroup::Parse() { - const long status = m_block.Parse(m_pCluster->m_pSegment->m_pReader); + const long status = m_block.Parse(m_pCluster); if (status) return status; @@ -8186,9 +8185,14 @@ Block::~Block() } -long Block::Parse(IMkvReader* pReader) +long Block::Parse(const Cluster* pCluster) { - assert(pReader); + if (pCluster == NULL) + return -1; + + if (pCluster->m_pSegment == NULL) + return -1; + assert(m_start >= 0); assert(m_size >= 0); assert(m_track <= 0); @@ -8200,6 +8204,8 @@ long Block::Parse(IMkvReader* pReader) long len; + IMkvReader* const pReader = pCluster->m_pSegment->m_pReader; + m_track = ReadUInt(pReader, pos, len); if (m_track <= 0) @@ -8528,7 +8534,6 @@ long long Block::GetTimeCode(const Cluster* pCluster) const assert(tc0 >= 0); const long long tc = tc0 + m_timecode; - assert(tc >= 0); return tc; //unscaled timecode units } diff --git a/mkvparser.hpp b/mkvparser.hpp index 7e4abec..76f79bb 100644 --- a/mkvparser.hpp +++ b/mkvparser.hpp @@ -86,7 +86,7 @@ public: Block(long long start, long long size); ~Block(); - long Parse(IMkvReader*); + long Parse(const Cluster*); long long GetTrackNumber() const; long long GetTimeCode(const Cluster*) const; //absolute, but not scaled