Use if-else instead of try-catch when finding track for Ogg page

This commit is contained in:
Martchus 2021-08-14 13:50:44 +02:00
parent 617e36f27c
commit c1ecc03617
1 changed files with 3 additions and 4 deletions

View File

@ -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()));