summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2017-07-06 17:06:14 +0200
committerAndras Timar <andras.timar@collabora.com>2017-07-31 12:03:54 +0200
commit141e090518b731aaf15e09da990d8a30a3429ffa (patch)
tree66214f48d1413010f1b16011ce3ee7325be599d2
parent5de6370e25ad9e995aed989cbdf75108adfed9e5 (diff)
Blind fix tdf#108612 explicitly checking for and against clipboard document
This is a combination of 2 commits. Attempt to blind fix tdf#108612 explicitly checking for clipboard document It seems that for some yet unknown reason in an (un)certain constellation ScDocument::IsClipboardSource() returns true because ScModule::GetClipDoc() does not return the clipboard document but the actual document instead, so destroying the clipboard document executes ScDocument::ClosingClipboardSource() and (or in earlier versions) ScDocument::ForgetNoteCaptions() on the actual document instead. Check also that ScDocument::bIsClip is set, hopefully curing the symptom, the real cause is something else. (cherry picked from commit d5020f35aec54f0241fa58557dc6caadc149f5a9) Another attempt to blind fix tdf#108612 Oddly in that scenario on Windows there are two clipboard documents alive when destroying one, so the destroyed one erroneously is said to be a clipboard source and then detachs the comments' caption information. There's no legit case where a clipboard document could actually be the real original source of another clipboard document, so bail out if the caller already is one. (cherry picked from commit 52e09f2c03f7cc024b2973c4806283c324fc23df) 0f8d240d8ec13bf91b77176dc6439a541cf14eaa Change-Id: I5ffd0706592d2737808e7004630a56c53115295b Reviewed-on: https://gerrit.libreoffice.org/40251 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com> (cherry picked from commit c5917736e39ff1e5d6995f93e9108082a87d9e35)
-rw-r--r--sc/source/core/data/document.cxx5
1 files changed, 4 insertions, 1 deletions
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index 931d44a550d1..3b968eb79e02 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -2524,8 +2524,11 @@ void ScDocument::SetClipParam(const ScClipParam& rParam)
bool ScDocument::IsClipboardSource() const
{
+ if (bIsClip)
+ return false;
+
ScDocument* pClipDoc = ScModule::GetClipDoc();
- return xPoolHelper.is() && pClipDoc && pClipDoc->xPoolHelper.is() &&
+ return pClipDoc && pClipDoc->bIsClip && pClipDoc->xPoolHelper.is() && xPoolHelper.is() &&
xPoolHelper->GetDocPool() == pClipDoc->xPoolHelper->GetDocPool();
}