[Libreoffice-commits] core.git: sw/source

Miklos Vajna vmiklos at collabora.co.uk
Wed Jul 12 07:04:21 UTC 2017


 sw/source/uibase/uiview/uivwimp.cxx |   10 ++++++++++
 1 file changed, 10 insertions(+)

New commits:
commit 637538a9957af5deb69e6677af7c1d62cdaf3eb2
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Tue Jul 11 22:42:58 2017 +0200

    Related: tdf#107976 SwView_Impl::AddTransferable: remove dead weak references
    
    So that the vector doesn't grow till document close without a reason.
    
    Change-Id: Iec06e47e39274df7de46c971692054f4f0bcbc96
    Reviewed-on: https://gerrit.libreoffice.org/39840
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    Tested-by: Jenkins <ci at libreoffice.org>

diff --git a/sw/source/uibase/uiview/uivwimp.cxx b/sw/source/uibase/uiview/uivwimp.cxx
index 2ab3dfd58c41..f3f951669ca9 100644
--- a/sw/source/uibase/uiview/uivwimp.cxx
+++ b/sw/source/uibase/uiview/uivwimp.cxx
@@ -226,6 +226,16 @@ void SwView_Impl::AddTransferable(SwTransferable& rTransferable)
     //prevent removing of the non-referenced SwTransferable
     rTransferable.m_refCount++;
     {
+        // Remove previously added, but no longer existing weak references.
+        for (auto it = mxTransferables.begin(); it != mxTransferables.end();)
+        {
+            uno::Reference<lang::XUnoTunnel> xTunnel(it->get(), uno::UNO_QUERY);
+            if (!xTunnel.is())
+                it = mxTransferables.erase(it);
+            else
+                ++it;
+        }
+
         mxTransferables.push_back(uno::WeakReference<lang::XUnoTunnel>(uno::Reference<lang::XUnoTunnel>(&rTransferable)));
     }
     rTransferable.m_refCount--;


More information about the Libreoffice-commits mailing list