[network/ruqola] src/core/messages: Use std::make_unique => avoiding to delete by hand

Laurent Montel <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git commit 963b0b03668dc6c9a95a3bb4517cf4218113a7fd by Laurent Montel.
Committed on 13/08/2026 at 19:28.
Pushed by mlaurent into branch 'master'.

Use std::make_unique => avoiding to delete by hand

M  +2    -2    src/core/messages/block/blocks.cpp
M  +2    -1    src/core/messages/block/blocks.h
M  +2    -2    src/core/messages/channels.cpp
M  +2    -1    src/core/messages/channels.h
M  +9    -18   src/core/messages/message.cpp
M  +2    -2    src/core/messages/messageattachments.cpp
M  +2    -1    src/core/messages/messageattachments.h
M  +2    -2    src/core/messages/messageencrypted.cpp
M  +2    -1    src/core/messages/messageencrypted.h
M  +2    -2    src/core/messages/messagepinned.cpp
M  +2    -1    src/core/messages/messagepinned.h
M  +2    -2    src/core/messages/messagetranslations.cpp
M  +2    -1    src/core/messages/messagetranslations.h
M  +2    -2    src/core/messages/messageurls.cpp
M  +2    -1    src/core/messages/messageurls.h
M  +2    -2    src/core/messages/reactions.cpp
M  +2    -1    src/core/messages/reactions.h
M  +2    -2    src/core/messages/replies.cpp
M  +2    -1    src/core/messages/replies.h

https://invent.kde.org/network/ruqola/-/commit/963b0b03668dc6c9a95a3bb4517cf4218113a7fd

diff --git a/src/core/messages/block/blocks.cpp b/src/core/messages/block/blocks.cpp
index 5b7cf2adeb..43e5cba88e 100644
--- a/src/core/messages/block/blocks.cpp
+++ b/src/core/messages/block/blocks.cpp
@@ -92,14 +92,14 @@ QJsonArray Blocks::serialize(const Blocks &blocks)
     return blockArray;
 }
 
-Blocks *Blocks::deserialize(const QJsonArray &blocksArray)
+std::unique_ptr<Blocks> Blocks::deserialize(const QJsonArray &blocksArray)
 {
     QList<Block> blocks;
     for (int i = 0, total = blocksArray.count(); i < total; ++i) {
         const Block block = Block::deserialize(blocksArray.at(i).toObject());
         blocks.append(std::move(block));
     }
-    auto final = new Blocks;
+    auto final = std::make_unique<Blocks>();
     final->setBlocks(blocks);
     return final;
 }
diff --git a/src/core/messages/block/blocks.h b/src/core/messages/block/blocks.h
index f95a6a7dda..7a6ad4b018 100644
--- a/src/core/messages/block/blocks.h
+++ b/src/core/messages/block/blocks.h
@@ -9,6 +9,7 @@
 #include "block.h"
 #include "libruqolacore_export.h"
 #include <QList>
+#include <memory>
 class LIBRUQOLACORE_EXPORT Blocks : public QSharedData
 {
 public:
@@ -24,7 +25,7 @@ public:
     [[nodiscard]] bool operator==(const Blocks &other) const;
 
     [[nodiscard]] static QJsonArray serialize(const Blocks &reactions);
-    [[nodiscard]] static Blocks *deserialize(const QJsonArray &o);
+    [[nodiscard]] static std::unique_ptr<Blocks> deserialize(const QJsonArray &o);
 
     [[nodiscard]] bool isEmpty() const;
 
diff --git a/src/core/messages/channels.cpp b/src/core/messages/channels.cpp
index f3807fe162..c9c134ecda 100644
--- a/src/core/messages/channels.cpp
+++ b/src/core/messages/channels.cpp
@@ -84,7 +84,7 @@ QJsonArray Channels::serialize(const Channels &channels)
     return array;
 }
 
-Channels *Channels::deserialize(const QJsonArray &channelsArray)
+std::unique_ptr<Channels> Channels::deserialize(const QJsonArray &channelsArray)
 {
     QList<ChannelInfo> channels;
     const int total = channelsArray.count();
@@ -98,7 +98,7 @@ Channels *Channels::deserialize(const QJsonArray &channelsArray)
         };
         channels.append(info);
     }
-    auto final = new Channels;
+    auto final = std::make_unique<Channels>();
     final->setChannels(channels);
     return final;
 }
diff --git a/src/core/messages/channels.h b/src/core/messages/channels.h
index 3700d81506..0c6fbae8cf 100644
--- a/src/core/messages/channels.h
+++ b/src/core/messages/channels.h
@@ -10,6 +10,7 @@
 #include <QList>
 #include <QObject>
 #include <QSharedData>
+#include <memory>
 class LIBRUQOLACORE_EXPORT Channels : public QSharedData
 {
 public:
@@ -32,7 +33,7 @@ public:
     [[nodiscard]] bool operator==(const Channels &other) const;
 
     [[nodiscard]] static QJsonArray serialize(const Channels &channels);
-    [[nodiscard]] static Channels *deserialize(const QJsonArray &o);
+    [[nodiscard]] static std::unique_ptr<Channels> deserialize(const QJsonArray &o);
 
     [[nodiscard]] bool isEmpty() const;
 
diff --git a/src/core/messages/message.cpp b/src/core/messages/message.cpp
index 0372010057..06d30dafb8 100644
--- a/src/core/messages/message.cpp
+++ b/src/core/messages/message.cpp
@@ -1176,9 +1176,8 @@ Message Message::deserialize(const QJsonObject &o, EmojiManager *emojiManager)
     message.mMessageStarred.setIsStarred(o["starred"_L1].toBool());
 
     if (o.contains("pinnedMessage"_L1)) {
-        const MessagePinned *const pinned = MessagePinned::deserialize(o["pinnedMessage"_L1].toObject());
+        const auto pinned = MessagePinned::deserialize(o["pinnedMessage"_L1].toObject());
         message.setMessagePinned(*pinned);
-        delete pinned;
     }
 
     message.mRole = o["role"_L1].toString();
@@ -1190,30 +1189,26 @@ Message Message::deserialize(const QJsonObject &o, EmojiManager *emojiManager)
 
     if (o.contains("attachments"_L1)) {
         const QJsonArray attachmentsArray = o.value("attachments"_L1).toArray();
-        const MessageAttachments *const attachments = MessageAttachments::deserialize(attachmentsArray, message.messageId());
+        const auto attachments = MessageAttachments::deserialize(attachmentsArray, message.messageId());
         message.setAttachments(*attachments);
-        delete attachments;
     }
 
     if (o.contains("urls"_L1)) {
         const QJsonArray urlsArray = o.value("urls"_L1).toArray();
-        const MessageUrls *const urls = MessageUrls::deserialize(urlsArray, message.messageId());
+        const auto urls = MessageUrls::deserialize(urlsArray, message.messageId());
         message.setUrls(*urls);
-        delete urls;
     }
 
     if (o.contains("reactions"_L1)) {
         const QJsonObject reactionsArray = o.value("reactions"_L1).toObject();
-        const Reactions *const reaction = Reactions::deserialize(reactionsArray, emojiManager);
+        const auto reaction = Reactions::deserialize(reactionsArray, emojiManager);
         message.setReactions(*reaction);
-        delete reaction;
     }
 
     if (o.contains("replies"_L1)) {
         const QJsonArray repliesArray = o.value("replies"_L1).toArray();
-        const Replies *const replies = Replies::deserialize(repliesArray);
+        const auto replies = Replies::deserialize(repliesArray);
         message.setReplies(*replies);
-        delete replies;
     }
 
     QMap<QString, QByteArray> mentions;
@@ -1226,16 +1221,14 @@ Message Message::deserialize(const QJsonObject &o, EmojiManager *emojiManager)
 
     if (o.contains("channels"_L1)) {
         const QJsonArray channelsArray = o.value("channels"_L1).toArray();
-        const Channels *const channels = Channels::deserialize(channelsArray);
+        const auto channels = Channels::deserialize(channelsArray);
         message.setChannels(*channels);
-        delete channels;
     }
 
     if (o.contains("blocks"_L1)) {
         const QJsonArray blocksArray = o.value("blocks"_L1).toArray();
-        const Blocks *const blocks = Blocks::deserialize(blocksArray);
+        const auto blocks = Blocks::deserialize(blocksArray);
         message.setBlocks(*blocks);
-        delete blocks;
     }
 
     if (o.contains("localTranslation"_L1)) {
@@ -1244,16 +1237,14 @@ Message Message::deserialize(const QJsonObject &o, EmojiManager *emojiManager)
     }
 
     if (o.contains("messageTranslation"_L1)) {
-        const MessageTranslations *const translation = MessageTranslations::deserialize(o["messageTranslation"_L1].toArray());
+        const auto translation = MessageTranslations::deserialize(o["messageTranslation"_L1].toArray());
         message.setMessageTranslation(*translation);
-        delete translation;
     }
 
     if (o.contains("content"_L1)) {
         const QJsonObject contentObj = o.value("content"_L1).toObject();
-        const MessageEncrypted *const encrypted = MessageEncrypted::deserialize(contentObj);
+        const auto encrypted = MessageEncrypted::deserialize(contentObj);
         message.setMessageEncrypted(*encrypted);
-        delete encrypted;
     }
 
     return message;
diff --git a/src/core/messages/messageattachments.cpp b/src/core/messages/messageattachments.cpp
index 01b6ef36c1..96ddf182c5 100644
--- a/src/core/messages/messageattachments.cpp
+++ b/src/core/messages/messageattachments.cpp
@@ -76,7 +76,7 @@ QJsonArray MessageAttachments::serialize(const MessageAttachments &attachments)
     return array;
 }
 
-MessageAttachments *MessageAttachments::deserialize(const QJsonArray &attachmentsArray, const QByteArray &messageId)
+std::unique_ptr<MessageAttachments> MessageAttachments::deserialize(const QJsonArray &attachmentsArray, const QByteArray &messageId)
 {
     QList<MessageAttachment> attachmentList;
     for (int i = 0; i < attachmentsArray.count(); ++i) {
@@ -87,7 +87,7 @@ MessageAttachments *MessageAttachments::deserialize(const QJsonArray &attachment
             attachmentList.append(std::move(att));
         }
     }
-    auto final = new MessageAttachments;
+    auto final = std::make_unique<MessageAttachments>();
     final->setMessageAttachments(attachmentList);
     return final;
 }
diff --git a/src/core/messages/messageattachments.h b/src/core/messages/messageattachments.h
index 12759e16ba..e29ef47d03 100644
--- a/src/core/messages/messageattachments.h
+++ b/src/core/messages/messageattachments.h
@@ -10,6 +10,7 @@
 #include "messageattachment.h"
 #include <QList>
 #include <QSharedData>
+#include <memory>
 class LIBRUQOLACORE_EXPORT MessageAttachments : public QSharedData
 {
 public:
@@ -25,7 +26,7 @@ public:
     [[nodiscard]] bool operator==(const MessageAttachments &other) const;
 
     [[nodiscard]] static QJsonArray serialize(const MessageAttachments &attachments);
-    [[nodiscard]] static MessageAttachments *deserialize(const QJsonArray &o, const QByteArray &messageId);
+    [[nodiscard]] static std::unique_ptr<MessageAttachments> deserialize(const QJsonArray &o, const QByteArray &messageId);
 
     [[nodiscard]] bool isEmpty() const;
 
diff --git a/src/core/messages/messageencrypted.cpp b/src/core/messages/messageencrypted.cpp
index fe341e157c..5d9074fc51 100644
--- a/src/core/messages/messageencrypted.cpp
+++ b/src/core/messages/messageencrypted.cpp
@@ -211,9 +211,9 @@ QDebug operator<<(QDebug d, const MessageEncrypted &t)
     return d;
 }
 
-MessageEncrypted *MessageEncrypted::deserialize(const QJsonObject &o)
+std::unique_ptr<MessageEncrypted> MessageEncrypted::deserialize(const QJsonObject &o)
 {
-    MessageEncrypted *encrypted = new MessageEncrypted;
+    auto encrypted = std::make_unique<MessageEncrypted>();
     encrypted->setAlgorithm(o["algorithm"_L1].toString().toLatin1());
     encrypted->setCiphertext(o["ciphertext"_L1].toString());
     encrypted->setIv(o["iv"_L1].toString().toLatin1());
diff --git a/src/core/messages/messageencrypted.h b/src/core/messages/messageencrypted.h
index 9ff4c85b80..b5977fd43f 100644
--- a/src/core/messages/messageencrypted.h
+++ b/src/core/messages/messageencrypted.h
@@ -8,6 +8,7 @@
 
 #include "libruqolacore_export.h"
 #include <QSharedData>
+#include <memory>
 class QJsonObject;
 
 class QDebug;
@@ -22,7 +23,7 @@ public:
     void parse(const QJsonObject &o);
 
     [[nodiscard]] static QJsonObject serialize(const MessageEncrypted &message);
-    [[nodiscard]] static MessageEncrypted *deserialize(const QJsonObject &o);
+    [[nodiscard]] static std::unique_ptr<MessageEncrypted> deserialize(const QJsonObject &o);
 
     [[nodiscard]] bool isValid() const;
 
diff --git a/src/core/messages/messagepinned.cpp b/src/core/messages/messagepinned.cpp
index ade415c2a9..826c83b480 100644
--- a/src/core/messages/messagepinned.cpp
+++ b/src/core/messages/messagepinned.cpp
@@ -82,9 +82,9 @@ QDebug operator<<(QDebug d, const MessagePinned &t)
     return d;
 }
 
-MessagePinned *MessagePinned::deserialize(const QJsonObject &o)
+std::unique_ptr<MessagePinned> MessagePinned::deserialize(const QJsonObject &o)
 {
-    MessagePinned *pinned = new MessagePinned;
+    auto pinned = std::make_unique<MessagePinned>();
     pinned->setPinned(o["pinned"_L1].toBool());
     pinned->setPinnedBy(o["pinnedBy"_L1].toString());
     return pinned;
diff --git a/src/core/messages/messagepinned.h b/src/core/messages/messagepinned.h
index 9166d2220f..1e7d68d809 100644
--- a/src/core/messages/messagepinned.h
+++ b/src/core/messages/messagepinned.h
@@ -8,6 +8,7 @@
 
 #include "libruqolacore_export.h"
 #include <QSharedData>
+#include <memory>
 class QJsonObject;
 
 class QDebug;
@@ -28,7 +29,7 @@ public:
     void parse(const QJsonObject &o);
 
     [[nodiscard]] static QJsonObject serialize(const MessagePinned &message);
-    [[nodiscard]] static MessagePinned *deserialize(const QJsonObject &o);
+    [[nodiscard]] static std::unique_ptr<MessagePinned> deserialize(const QJsonObject &o);
 
     [[nodiscard]] bool isValid() const;
 
diff --git a/src/core/messages/messagetranslations.cpp b/src/core/messages/messagetranslations.cpp
index 3da1e8bd35..eb01388d9e 100644
--- a/src/core/messages/messagetranslations.cpp
+++ b/src/core/messages/messagetranslations.cpp
@@ -76,9 +76,9 @@ QJsonArray MessageTranslations::serialize(const MessageTranslations &translation
     return array;
 }
 
-MessageTranslations *MessageTranslations::deserialize(const QJsonArray &array)
+std::unique_ptr<MessageTranslations> MessageTranslations::deserialize(const QJsonArray &array)
 {
-    MessageTranslations *translationMessage = new MessageTranslations;
+    auto translationMessage = std::make_unique<MessageTranslations>();
     QMap<QString, QString> translationStrings;
     for (int i = 0, total = array.count(); i < total; ++i) {
         const QJsonObject o = array.at(i).toObject();
diff --git a/src/core/messages/messagetranslations.h b/src/core/messages/messagetranslations.h
index ceb46d429b..1f28bd78cf 100644
--- a/src/core/messages/messagetranslations.h
+++ b/src/core/messages/messagetranslations.h
@@ -8,6 +8,7 @@
 
 #include "libruqolacore_export.h"
 #include <QMap>
+#include <memory>
 class QJsonArray;
 class QJsonObject;
 class LIBRUQOLACORE_EXPORT MessageTranslations : public QSharedData
@@ -25,7 +26,7 @@ public:
     [[nodiscard]] QString translatedStringFromLanguage(const QString &lang) const;
 
     [[nodiscard]] static QJsonArray serialize(const MessageTranslations &translation);
-    [[nodiscard]] static MessageTranslations *deserialize(const QJsonArray &o);
+    [[nodiscard]] static std::unique_ptr<MessageTranslations> deserialize(const QJsonArray &o);
 
     [[nodiscard]] bool isEmpty() const;
 
diff --git a/src/core/messages/messageurls.cpp b/src/core/messages/messageurls.cpp
index d1f0cb4bec..04e2514235 100644
--- a/src/core/messages/messageurls.cpp
+++ b/src/core/messages/messageurls.cpp
@@ -76,7 +76,7 @@ QJsonArray MessageUrls::serialize(const MessageUrls &urls)
     return urlArray;
 }
 
-MessageUrls *MessageUrls::deserialize(const QJsonArray &urlsArray, const QByteArray &messageId)
+std::unique_ptr<MessageUrls> MessageUrls::deserialize(const QJsonArray &urlsArray, const QByteArray &messageId)
 {
     QList<MessageUrl> urls;
     for (int i = 0; i < urlsArray.count(); ++i) {
@@ -88,7 +88,7 @@ MessageUrls *MessageUrls::deserialize(const QJsonArray &urlsArray, const QByteAr
         }
     }
 
-    auto final = new MessageUrls;
+    auto final = std::make_unique<MessageUrls>();
     final->setMessageUrls(urls);
     return final;
 }
diff --git a/src/core/messages/messageurls.h b/src/core/messages/messageurls.h
index b70e5a3d96..5d848e4d6f 100644
--- a/src/core/messages/messageurls.h
+++ b/src/core/messages/messageurls.h
@@ -10,6 +10,7 @@
 #include "messageurl.h"
 #include <QList>
 #include <QSharedData>
+#include <memory>
 class LIBRUQOLACORE_EXPORT MessageUrls : public QSharedData
 {
 public:
@@ -25,7 +26,7 @@ public:
     [[nodiscard]] bool operator==(const MessageUrls &other) const;
 
     [[nodiscard]] static QJsonArray serialize(const MessageUrls &urls);
-    [[nodiscard]] static MessageUrls *deserialize(const QJsonArray &o, const QByteArray &messageId);
+    [[nodiscard]] static std::unique_ptr<MessageUrls> deserialize(const QJsonArray &o, const QByteArray &messageId);
 
     [[nodiscard]] bool isEmpty() const;
 
diff --git a/src/core/messages/reactions.cpp b/src/core/messages/reactions.cpp
index 5b9374f575..ef5fbdd636 100644
--- a/src/core/messages/reactions.cpp
+++ b/src/core/messages/reactions.cpp
@@ -88,7 +88,7 @@ QJsonObject Reactions::serialize(const Reactions &reactions)
     return obj;
 }
 
-Reactions *Reactions::deserialize(const QJsonObject &o, EmojiManager *emojiManager)
+std::unique_ptr<Reactions> Reactions::deserialize(const QJsonObject &o, EmojiManager *emojiManager)
 {
     QList<Reaction> reacts;
     const QStringList lst = o.keys();
@@ -110,7 +110,7 @@ Reactions *Reactions::deserialize(const QJsonObject &o, EmojiManager *emojiManag
         }
         users.clear();
     }
-    auto final = new Reactions;
+    auto final = std::make_unique<Reactions>();
     final->setReactions(reacts);
     return final;
 }
diff --git a/src/core/messages/reactions.h b/src/core/messages/reactions.h
index a6009b078c..1c4b13242b 100644
--- a/src/core/messages/reactions.h
+++ b/src/core/messages/reactions.h
@@ -10,6 +10,7 @@
 #include "reaction.h"
 #include <QList>
 #include <QSharedData>
+#include <memory>
 class EmojiManager;
 class LIBRUQOLACORE_EXPORT Reactions : public QSharedData
 {
@@ -26,7 +27,7 @@ public:
     [[nodiscard]] bool operator==(const Reactions &other) const;
 
     [[nodiscard]] static QJsonObject serialize(const Reactions &reactions);
-    [[nodiscard]] static Reactions *deserialize(const QJsonObject &o, EmojiManager *emojiManager = nullptr);
+    [[nodiscard]] static std::unique_ptr<Reactions> deserialize(const QJsonObject &o, EmojiManager *emojiManager = nullptr);
 
     [[nodiscard]] bool isEmpty() const;
 
diff --git a/src/core/messages/replies.cpp b/src/core/messages/replies.cpp
index 0302eda298..4fbe54f789 100644
--- a/src/core/messages/replies.cpp
+++ b/src/core/messages/replies.cpp
@@ -66,14 +66,14 @@ QJsonArray Replies::serialize(const Replies &replies)
     return QJsonArray::fromStringList(serialize);
 }
 
-Replies *Replies::deserialize(const QJsonArray &repliesArray)
+std::unique_ptr<Replies> Replies::deserialize(const QJsonArray &repliesArray)
 {
     QList<QByteArray> replies;
     replies.reserve(repliesArray.count());
     for (int i = 0, total = repliesArray.count(); i < total; ++i) {
         replies.append(repliesArray.at(i).toString().toLatin1());
     }
-    auto final = new Replies;
+    auto final = std::make_unique<Replies>();
     final->setReplies(replies);
     return final;
 }
diff --git a/src/core/messages/replies.h b/src/core/messages/replies.h
index 06574a93e4..58cd6e5596 100644
--- a/src/core/messages/replies.h
+++ b/src/core/messages/replies.h
@@ -10,6 +10,7 @@
 #include <QList>
 #include <QMetaType>
 #include <QSharedData>
+#include <memory>
 class QJsonArray;
 class LIBRUQOLACORE_EXPORT Replies : public QSharedData
 {
@@ -23,7 +24,7 @@ public:
     [[nodiscard]] bool operator==(const Replies &other) const;
 
     [[nodiscard]] static QJsonArray serialize(const Replies &channels);
-    [[nodiscard]] static Replies *deserialize(const QJsonArray &o);
+    [[nodiscard]] static std::unique_ptr<Replies> deserialize(const QJsonArray &o);
 
     [[nodiscard]] bool isEmpty() const;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.