Use if-else instead of try-catch when finding track for Ogg page
This commit is contained in:
parent
617e36f27c
commit
c1ecc03617
|
@ -204,10 +204,9 @@ void OggContainer::internalParseHeader(Diagnostics &diag, AbortableProgressFeedb
|
|||
}
|
||||
OggStream *stream;
|
||||
std::uint64_t lastNewStreamOffset = 0;
|
||||
try {
|
||||
stream = m_tracks[m_streamsBySerialNo.at(page.streamSerialNumber())].get();
|
||||
stream->m_size += page.dataSize();
|
||||
} catch (const out_of_range &) {
|
||||
if (const auto streamIndex = m_streamsBySerialNo.find(page.streamSerialNumber()); streamIndex != m_streamsBySerialNo.end()) {
|
||||
stream = m_tracks[streamIndex->second].get();
|
||||
} else {
|
||||
// new stream serial number recognized -> add new stream
|
||||
m_streamsBySerialNo[page.streamSerialNumber()] = m_tracks.size();
|
||||
m_tracks.emplace_back(make_unique<OggStream>(*this, m_iterator.currentPageIndex()));
|
||||
|
|
Loading…
Reference in New Issue