diff --git a/mkvparser.cpp b/mkvparser.cpp index c8cebab..9740121 100644 --- a/mkvparser.cpp +++ b/mkvparser.cpp @@ -592,9 +592,10 @@ bool mkvparser::Match( namespace mkvparser { -EBMLHeader::EBMLHeader(): +EBMLHeader::EBMLHeader() : m_docType(NULL) { + Init(); } EBMLHeader::~EBMLHeader() @@ -602,6 +603,23 @@ EBMLHeader::~EBMLHeader() delete[] m_docType; } +void EBMLHeader::Init() +{ + m_version = 1; + m_readVersion = 1; + m_maxIdLength = 4; + m_maxSizeLength = 8; + + if (m_docType) + { + delete[] m_docType; + m_docType = NULL; + } + + m_docTypeVersion = 1; + m_docTypeReadVersion = 1; +} + long long EBMLHeader::Parse( IMkvReader* pReader, long long& pos) @@ -700,13 +718,8 @@ long long EBMLHeader::Parse( return pos + result; end = pos + result; - - m_version = 1; - m_readVersion = 1; - m_maxIdLength = 4; - m_maxSizeLength = 8; - m_docTypeVersion = 1; - m_docTypeReadVersion = 1; + + Init(); while (pos < end) { diff --git a/mkvparser.hpp b/mkvparser.hpp index 106be78..a73a00a 100644 --- a/mkvparser.hpp +++ b/mkvparser.hpp @@ -56,6 +56,7 @@ struct EBMLHeader long long m_docTypeReadVersion; long long Parse(IMkvReader*, long long&); + void Init(); };