From 27e8970fffa107355138d6181a98ff130c3e84d5 Mon Sep 17 00:00:00 2001 From: Andreas Gattringer Date: Fri, 12 Jul 2024 10:33:26 +0200 Subject: [PATCH] fix segfault at loadError from message with attached file --- src/models/messagecontentmodel.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/models/messagecontentmodel.cpp b/src/models/messagecontentmodel.cpp index 785d7b4db..f3e96bbbe 100644 --- a/src/models/messagecontentmodel.cpp +++ b/src/models/messagecontentmodel.cpp @@ -439,6 +439,7 @@ QList MessageContentModel::componentsForType(MessageComponentT const auto event = eventCast(m_event); auto body = EventHandler::rawMessageBody(*event); components += TextHandler().textComponents(body, EventHandler::messageBodyInputFormat(*event), m_room, event, event->isReplaced()); + if (m_emptyItinerary) { auto fileTransferInfo = fileInfo(); @@ -449,8 +450,8 @@ QList MessageContentModel::componentsForType(MessageComponentT QFile file(fileTransferInfo.localPath.path()); file.open(QIODevice::ReadOnly); components += MessageComponent{MessageComponentType::Code, - QString::fromStdString(file.readAll().toStdString()), - {{QStringLiteral("class"), definitionForFile.name()}}}; + QString::fromStdString(file.readAll().toStdString()), + {{QStringLiteral("class"), definitionForFile.name()}}}; } #endif @@ -458,11 +459,13 @@ QList MessageContentModel::componentsForType(MessageComponentT QImageReader reader(fileTransferInfo.localPath.path()); components += MessageComponent{MessageComponentType::Pdf, QString(), {{QStringLiteral("size"), reader.size()}}}; } + } else if (m_itineraryModel != nullptr) { + components += MessageComponent{MessageComponentType::Itinerary, QString(), {}}; + if (m_itineraryModel->rowCount() > 0) { + updateItineraryModel(); + } } else { updateItineraryModel(); - if (m_itineraryModel != nullptr) { - components += MessageComponent{MessageComponentType::Itinerary, QString(), {}}; - } } return components; } @@ -558,16 +561,16 @@ void MessageContentModel::updateItineraryModel() m_itineraryModel = new ItineraryModel(this); connect(m_itineraryModel, &ItineraryModel::loaded, this, [this]() { if (m_itineraryModel->rowCount() == 0) { + m_emptyItinerary = true; m_itineraryModel->deleteLater(); m_itineraryModel = nullptr; - m_emptyItinerary = true; resetContent(); } }); connect(m_itineraryModel, &ItineraryModel::loadErrorOccurred, this, [this]() { + m_emptyItinerary = true; m_itineraryModel->deleteLater(); m_itineraryModel = nullptr; - m_emptyItinerary = true; resetContent(); }); }