[Libreoffice-commits] online.git: loolwsd/LOOLKit.cpp
Ashod Nakashian
ashod.nakashian at collabora.co.uk
Wed Aug 31 04:42:57 UTC 2016
loolwsd/LOOLKit.cpp | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
New commits:
commit fad6715f7d69b3e551deca566d72cfd1b7302d50
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Tue Aug 30 19:23:51 2016 -0400
loolwsd: guard against processing commands before fully loading
Change-Id: Iac915074728f616d81b05558b886998855326a2e
Reviewed-on: https://gerrit.libreoffice.org/28525
Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
Tested-by: Ashod Nakashian <ashnakash at gmail.com>
diff --git a/loolwsd/LOOLKit.cpp b/loolwsd/LOOLKit.cpp
index a2ff02e..d3c98b7 100644
--- a/loolwsd/LOOLKit.cpp
+++ b/loolwsd/LOOLKit.cpp
@@ -705,6 +705,12 @@ public:
}
std::unique_lock<std::mutex> lock(_loKitDocument->getLock());
+ if (_loKitDocument->getViews() <= 0)
+ {
+ Log::error("Tile rendering requested without views.");
+ return;
+ }
+
Timestamp timestamp;
_loKitDocument->paintPartTile(pixmap.data(), tileCombined.getPart(),
pixmapWidth, pixmapHeight,
@@ -998,14 +1004,15 @@ private:
auto session = it->second->getSession();
int viewId = 0;
+ std::unique_lock<std::mutex> lockLokDoc;
if (!_loKitDocument)
{
// This is the first time we are loading the document
Log::info("Loading new document from URI: [" + uri + "] for session [" + sessionId + "].");
-
auto lock(_loKit->getLock());
+
if (LIBREOFFICEKIT_HAS(_loKit->get(), registerCallback))
{
_loKit->get()->pClass->registerCallback(_loKit->get(), GlobalCallback, this);
@@ -1023,6 +1030,8 @@ private:
Log::debug("Calling lokit::documentLoad.");
_loKitDocument = _loKit->documentLoad(uri.c_str());
Log::debug("Returned lokit::documentLoad.");
+ auto l(_loKitDocument->getLock());
+ lockLokDoc.swap(l);
if (!_loKitDocument || !_loKitDocument->get())
{
@@ -1058,6 +1067,9 @@ private:
}
else
{
+ auto l(_loKitDocument->getLock());
+ lockLokDoc.swap(l);
+
// Check if this document requires password
if (_isDocPasswordProtected)
{
More information about the Libreoffice-commits
mailing list