Fix crashes when invoking DB query functions with invalid index

This commit is contained in:
Martchus 2023-08-08 00:53:57 +02:00
parent 63f0ab96a4
commit 5222082635
3 changed files with 8 additions and 8 deletions

View File

@ -43,7 +43,7 @@ LyricsWikiaResultsModel::LyricsWikiaResultsModel(SongDescription &&initialSongDe
bool LyricsWikiaResultsModel::fetchCover(const QModelIndex &index) bool LyricsWikiaResultsModel::fetchCover(const QModelIndex &index)
{ {
if (index.parent().isValid() || index.row() >= m_results.size()) { if (index.parent().isValid() || !index.isValid() || index.row() >= m_results.size()) {
return true; return true;
} }
@ -84,7 +84,7 @@ bool LyricsWikiaResultsModel::fetchCover(const QModelIndex &index)
bool LyricsWikiaResultsModel::fetchLyrics(const QModelIndex &index) bool LyricsWikiaResultsModel::fetchLyrics(const QModelIndex &index)
{ {
if (index.parent().isValid() || index.row() >= m_results.size()) { if (index.parent().isValid() || !index.isValid() || index.row() >= m_results.size()) {
return true; return true;
} }
@ -391,7 +391,7 @@ void LyricsWikiaResultsModel::parseAlbumDetailsAndFetchCover(int row, const QByt
QUrl LyricsWikiaResultsModel::webUrl(const QModelIndex &index) QUrl LyricsWikiaResultsModel::webUrl(const QModelIndex &index)
{ {
if (index.parent().isValid() || index.row() >= results().size()) { if (index.parent().isValid() || !index.isValid() || index.row() >= m_results.size()) {
return QUrl(); return QUrl();
} }

View File

@ -40,7 +40,7 @@ MusicBrainzResultsModel::MusicBrainzResultsModel(SongDescription &&initialSongDe
bool MusicBrainzResultsModel::fetchCover(const QModelIndex &index) bool MusicBrainzResultsModel::fetchCover(const QModelIndex &index)
{ {
if (index.parent().isValid() || index.row() >= m_results.size()) { if (index.parent().isValid() || !index.isValid() || index.row() >= m_results.size()) {
return true; return true;
} }
@ -73,10 +73,10 @@ bool MusicBrainzResultsModel::fetchCover(const QModelIndex &index)
QUrl MusicBrainzResultsModel::webUrl(const QModelIndex &index) QUrl MusicBrainzResultsModel::webUrl(const QModelIndex &index)
{ {
if (index.parent().isValid() || index.row() >= results().size()) { if (index.parent().isValid() || !index.isValid() || index.row() >= m_results.size()) {
return QUrl(); return QUrl();
} }
return QUrl(QStringLiteral("https://musicbrainz.org/recording/") + results().at(index.row()).songId); return QUrl(QStringLiteral("https://musicbrainz.org/recording/") + m_results.at(index.row()).songId);
} }
void MusicBrainzResultsModel::parseInitialResults(const QByteArray &data) void MusicBrainzResultsModel::parseInitialResults(const QByteArray &data)

View File

@ -32,7 +32,7 @@ TekstowoResultsModel::TekstowoResultsModel(SongDescription &&initialSongDescript
bool TekstowoResultsModel::fetchLyrics(const QModelIndex &index) bool TekstowoResultsModel::fetchLyrics(const QModelIndex &index)
{ {
if ((index.parent().isValid() || index.row() >= m_results.size()) && !m_results[index.row()].lyrics.isEmpty()) { if ((index.parent().isValid() || !index.isValid() || index.row() >= m_results.size()) || m_results[index.row()].lyrics.isEmpty()) {
return true; return true;
} }
const auto url = webUrl(index); const auto url = webUrl(index);
@ -145,7 +145,7 @@ void TekstowoResultsModel::parseLyricsResults(int row, const QByteArray &data)
QUrl TekstowoResultsModel::webUrl(const QModelIndex &index) QUrl TekstowoResultsModel::webUrl(const QModelIndex &index)
{ {
if (index.parent().isValid() || index.row() >= results().size()) { if (index.parent().isValid() || !index.isValid() || index.row() >= m_results.size()) {
return QUrl(); return QUrl();
} }
auto url = tekstowoUrl(); auto url = tekstowoUrl();