From 8ad822fd0b114f3e3b9b3ff84fb4d67a8c6caf8b Mon Sep 17 00:00:00 2001 From: James Graham Date: Sat, 30 Aug 2025 12:49:11 +0100 Subject: [PATCH] Fix the link preview insert lambda to make sure that it doesn't crash Fix the link preview insert lambda to make sure that it doesn't crash and also make sure that the system doesn't lock up on link preview load --- src/messagecontent/models/messagecontentmodel.cpp | 2 +- src/messagecontent/models/messagecontentmodel.h | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/messagecontent/models/messagecontentmodel.cpp b/src/messagecontent/models/messagecontentmodel.cpp index 5de45080e..b460c8f88 100644 --- a/src/messagecontent/models/messagecontentmodel.cpp +++ b/src/messagecontent/models/messagecontentmodel.cpp @@ -259,7 +259,7 @@ MessageComponent MessageContentModel::linkPreviewComponent(const QUrl &link) it->type = MessageComponentType::LinkPreview; Q_EMIT dataChanged(index(it - m_components.begin()), index(it - m_components.begin()), {ComponentTypeRole}); } - return it; + return ++it; }); } }); diff --git a/src/messagecontent/models/messagecontentmodel.h b/src/messagecontent/models/messagecontentmodel.h index 7a446ea6b..b14dcc166 100644 --- a/src/messagecontent/models/messagecontentmodel.h +++ b/src/messagecontent/models/messagecontentmodel.h @@ -221,8 +221,9 @@ private: for (qsizetype j = 0; j < links.size(); ++j) { const auto linkPreview = linkPreviewComponent(links[j]); if (!m_removedLinkPreviews.contains(links[j]) && !linkPreview.isEmpty()) { - beginInsertRows({}, std::distance(m_components.begin(), it) + j + 1, std::distance(m_components.begin(), it) + j + 1); - it = m_components.insert(it + j + 1, linkPreview); + const auto insertRow = std::distance(m_components.begin(), it) + 1; + beginInsertRows({}, insertRow, insertRow); + it = m_components.insert(insertRow, linkPreview); previewAdded = true; endInsertRows(); }