From 5f978a3b8d2cdab29aef4544dfb66ad755dfdc3f Mon Sep 17 00:00:00 2001 From: Ashod Nakashian Date: Fri, 15 Feb 2019 09:23:58 -0500 Subject: [PATCH] LOK: always update the payload string via the cache Change-Id: I090ceb7d214d0809e86b023a8806b6655627918a Reviewed-on: https://gerrit.libreoffice.org/67894 Tested-by: Jenkins Reviewed-by: Ashod Nakashian --- desktop/inc/lib/init.hxx | 2 ++ desktop/source/lib/init.cxx | 15 +++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/desktop/inc/lib/init.hxx b/desktop/inc/lib/init.hxx index be96814820ce..2ba5595d8b46 100644 --- a/desktop/inc/lib/init.hxx +++ b/desktop/inc/lib/init.hxx @@ -102,6 +102,8 @@ namespace desktop { /// Parse and set the RectangleAndPart object and return it. Clobbers PayloadString. RectangleAndPart& setRectangleAndPart(const std::string& payload); + /// Set a RectangleAndPart object and update PayloadString. + void setRectangleAndPart(const RectangleAndPart& rRectAndPart); /// Return the parsed RectangleAndPart instance. const RectangleAndPart& getRectangleAndPart() const; /// Parse and set the JSON object and return it. Clobbers PayloadString. diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index c4edf05e16dc..bf36321fc9a0 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -456,12 +456,18 @@ RectangleAndPart RectangleAndPart::Create(const std::string& rPayload) RectangleAndPart& CallbackFlushHandler::CallbackData::setRectangleAndPart(const std::string& payload) { - PayloadString = payload; + setRectangleAndPart(RectangleAndPart::Create(payload)); - PayloadObject = RectangleAndPart::Create(payload); + // Return reference to the cached object. return boost::get(PayloadObject); } +void CallbackFlushHandler::CallbackData::setRectangleAndPart(const RectangleAndPart& rRectAndPart) +{ + PayloadString = rRectAndPart.toString().getStr(); + PayloadObject = rRectAndPart; +} + const RectangleAndPart& CallbackFlushHandler::CallbackData::getRectangleAndPart() const { assert(PayloadObject.which() == 1); @@ -477,6 +483,7 @@ boost::property_tree::ptree& CallbackFlushHandler::CallbackData::setJson(const s // Let boost normalize the payload so it always matches the cache. setJson(aTree); + // Return reference to the cached object. return boost::get(PayloadObject); } @@ -913,7 +920,7 @@ void CallbackFlushHandler::callback(const int type, const char* payload, void* d void CallbackFlushHandler::queue(const int type, const char* data) { CallbackData aCallbackData(type, (data ? data : "(nil)")); - std::string& payload = aCallbackData.PayloadString; + const std::string& payload = aCallbackData.PayloadString; SAL_INFO("lok", "Queue: " << type << " : " << payload); #ifdef DBG_UTIL @@ -1202,7 +1209,7 @@ void CallbackFlushHandler::queue(const int type, const char* data) } } - payload = rcNew.toString().getStr(); + aCallbackData.setRectangleAndPart(rcNew); } break; -- 2.11.4.GIT