diff options
author | Matt Ranostay <matt.ranostay@konsulko.com> | 2018-04-30 17:58:11 -0700 |
---|---|---|
committer | Matt Ranostay <matt.ranostay@konsulko.com> | 2018-04-30 17:58:20 -0700 |
commit | 57489437e0eb3057d34030325c784d6ac2dbf3fe (patch) | |
tree | 03f264c80e8c8c1018ba65aacbe255903b47e732 | |
parent | 8e97722e96916a8a2f444645bac4a6ea5434c262 (diff) |
libqtappfw: message: fix memory leak with QJsonArray
QJsonArray object was being allocated on the heap and never freed.
Switch to having a m_request member field and confirming it is only
populated with data once.
Change-Id: I60f406eff032650cac878efa7e1db61ee18e2eb2
Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
-rw-r--r-- | message.cpp | 16 | ||||
-rw-r--r-- | message.h | 2 |
2 files changed, 12 insertions, 6 deletions
diff --git a/message.cpp b/message.cpp index 95bc586..33211da 100644 --- a/message.cpp +++ b/message.cpp @@ -29,14 +29,18 @@ Message::Message() bool Message::createRequest(QString api, QString verb, QJsonValue parameter) { - QJsonArray *request = new QJsonArray; - request->append(Call); - request->append(9999); - request->append(api + (QString)("/") + verb); - request->append(QJsonValue(parameter)); + if (!m_request.isEmpty()){ + qWarning("Message instance has already been used. Cannot send another request."); + return false; + } + + m_request.append(Call); + m_request.append(9999); + m_request.append(api + (QString)("/") + verb); + m_request.append(QJsonValue(parameter)); QJsonDocument jdoc; - jdoc.setArray(*request); + jdoc.setArray(m_request); m_jdoc = jdoc; m_init = true; @@ -18,6 +18,7 @@ #define MESSAGE_H #include <QObject> +#include <QJsonArray> #include <QJsonDocument> #include <QJsonObject> @@ -92,6 +93,7 @@ class Message : public QObject protected: bool m_event, m_init, m_reply; QString m_event_api, m_event_name, m_reply_info, m_reply_status, m_reply_uuid; + QJsonArray m_request; QJsonDocument m_jdoc; QJsonObject m_event_data, m_reply_data; }; |