summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sw/source/uibase/uiview/uivwimp.cxx10
1 files changed, 10 insertions, 0 deletions
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--;