summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorSzymon Kłos <szymon.klos@collabora.com>2020-12-09 12:00:59 +0100
committerAndras Timar <andras.timar@collabora.com>2021-04-09 11:55:45 +0200
commitb86ed3d917a51c34de7048f863ec1359b660ded3 (patch)
tree686f0e346c17e2deb0c6e027683affdd70df19d6 /vcl
parent8e4d4ebd28681439d42d09bbed98f861f59b4f1e (diff)
jsdialog: properly destroy JsonWriter
Change-Id: Ic9bc13b60284ece25b6c72326fd2185d14e17029 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107466 Tested-by: Szymon Kłos <szymon.klos@collabora.com> Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/inc/jsdialog/jsdialogbuilder.hxx2
-rw-r--r--vcl/jsdialog/jsdialogbuilder.cxx17
2 files changed, 13 insertions, 6 deletions
diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx
index 14090f43a0e4..556e34ffd346 100644
--- a/vcl/inc/jsdialog/jsdialogbuilder.hxx
+++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx
@@ -52,7 +52,7 @@ public:
VclPtr<vcl::Window> getNotifierWindow() { return m_aNotifierWindow; }
private:
- void send(std::unique_ptr<tools::JsonWriter> aJsonWriter);
+ void send(tools::JsonWriter& aJsonWriter);
std::unique_ptr<tools::JsonWriter> dumpStatus() const;
std::unique_ptr<tools::JsonWriter> generateCloseMessage() const;
};
diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx
index 0363d35867af..1bd064fc5c3e 100644
--- a/vcl/jsdialog/jsdialogbuilder.cxx
+++ b/vcl/jsdialog/jsdialogbuilder.cxx
@@ -40,21 +40,28 @@ JSDialogNotifyIdle::JSDialogNotifyIdle(VclPtr<vcl::Window> aNotifierWindow,
void JSDialogNotifyIdle::ForceUpdate() { m_bForce = true; }
-void JSDialogNotifyIdle::send(std::unique_ptr<tools::JsonWriter> aJsonWriter)
+void JSDialogNotifyIdle::send(tools::JsonWriter& aJsonWriter)
{
if (!m_aNotifierWindow)
+ {
+ free(aJsonWriter.extractData());
return;
+ }
const vcl::ILibreOfficeKitNotifier* pNotifier = m_aNotifierWindow->GetLOKNotifier();
if (pNotifier)
{
- if (m_bForce || !aJsonWriter->isDataEquals(m_LastNotificationMessage))
+ if (m_bForce || !aJsonWriter.isDataEquals(m_LastNotificationMessage))
{
m_bForce = false;
- m_LastNotificationMessage = aJsonWriter->extractAsStdString();
+ m_LastNotificationMessage = aJsonWriter.extractAsStdString();
pNotifier->libreOfficeKitViewCallback(LOK_CALLBACK_JSDIALOG,
m_LastNotificationMessage.c_str());
}
+ else
+ {
+ free(aJsonWriter.extractData());
+ }
}
}
@@ -101,9 +108,9 @@ std::unique_ptr<tools::JsonWriter> JSDialogNotifyIdle::generateCloseMessage() co
return aJsonWriter;
}
-void JSDialogNotifyIdle::Invoke() { send(dumpStatus()); }
+void JSDialogNotifyIdle::Invoke() { send(*dumpStatus()); }
-void JSDialogNotifyIdle::sendClose() { send(generateCloseMessage()); }
+void JSDialogNotifyIdle::sendClose() { send(*generateCloseMessage()); }
void JSDialogSender::notifyDialogState(bool bForce)
{