[Libreoffice-commits] online.git: Branch 'distro/collabora/collabora-online-2-0' - wsd/LOOLWSD.cpp

Ashod Nakashian ashod.nakashian at collabora.co.uk
Wed Dec 21 15:50:56 UTC 2016


 wsd/LOOLWSD.cpp |   12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

New commits:
commit ca551065d9b553adf02305d97d0210f43ef9ef4d
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Wed Dec 21 10:33:48 2016 -0500

    wsd: don't reuse DocBrokers iterator to insert
    
    Simplifies the code and makes it less error prone.
    
    Also add more logging on modifying DocBrokers.
    
    Change-Id: I861495912eb4994a32b1ccaccc181fb1aad26e1f
    Reviewed-on: https://gerrit.libreoffice.org/32294
    Reviewed-by: Michael Meeks <michael.meeks at collabora.com>
    Tested-by: Michael Meeks <michael.meeks at collabora.com>

diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp
index 76fe06c..e5ea3dd 100644
--- a/wsd/LOOLWSD.cpp
+++ b/wsd/LOOLWSD.cpp
@@ -564,6 +564,7 @@ private:
                     // FIXME: What if the same document is already open? Need a fake dockey here?
                     LOG_DBG("New DocumentBroker for docKey [" << docKey << "].");
                     DocBrokers.emplace(docKey, docBroker);
+                    LOG_TRC("Have " << DocBrokers.size() << " DocBrokers after inserting.");
 
                     // Load the document.
                     std::shared_ptr<LOOLWebSocket> ws;
@@ -781,8 +782,8 @@ private:
         cleanupDocBrokers();
 
         // Lookup this document.
-        auto it = DocBrokers.lower_bound(docKey);
-        if (it != DocBrokers.end() && it->first == docKey)
+        auto it = DocBrokers.find(docKey);
+        if (it != DocBrokers.end())
         {
             // Get the DocumentBroker from the Cache.
             LOG_DBG("Found DocumentBroker with docKey [" << docKey << "].");
@@ -837,8 +838,8 @@ private:
 
                 // Retake the lock and recheck if another thread created the DocBroker.
                 docBrokersLock.lock();
-                it = DocBrokers.lower_bound(docKey);
-                if (it != DocBrokers.end() && it->first == docKey)
+                it = DocBrokers.find(docKey);
+                if (it != DocBrokers.end())
                 {
                     // Get the DocumentBroker from the Cache.
                     LOG_DBG("Found DocumentBroker for docKey [" << docKey << "].");
@@ -881,7 +882,8 @@ private:
             LOG_DBG("New DocumentBroker for docKey [" << docKey << "].");
             docBroker = std::make_shared<DocumentBroker>(uriPublic, docKey, LOOLWSD::ChildRoot, child);
             child->setDocumentBroker(docBroker);
-            DocBrokers.insert(it, std::make_pair(docKey, docBroker));
+            DocBrokers.emplace(docKey, docBroker);
+            LOG_TRC("Have " << DocBrokers.size() << " DocBrokers after inserting.");
         }
 
         // Validate the broker.


More information about the Libreoffice-commits mailing list