diff options
author | Eike Rathke <erack@redhat.com> | 2017-01-18 16:18:38 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2017-01-18 20:58:00 +0000 |
commit | 4d3b4a8ad12767c846b48c3a424e6bb0fa7af924 (patch) | |
tree | 676712822f3f6e3c623f823ad0792ca3e10b3d38 /sc/source/core/data/documen2.cxx | |
parent | 237e4d7c6349f8a97657e055b7479158460d6ac8 (diff) |
tdf#104967 prevent crash when pasting notes originating from a closed document
This is only a workaround to prevent a crash, the actual note content is lost
when pasting, only a standard empty note caption will be pasted.
Change-Id: Ifaef5d30cc2024f3d03d6b2b4f56c5ccfbb67142
(cherry picked from commit cb566c056b0e8f9f73dac3cbaf497e102a247cb9)
Reviewed-on: https://gerrit.libreoffice.org/33274
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sc/source/core/data/documen2.cxx')
-rw-r--r-- | sc/source/core/data/documen2.cxx | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx index e5f4ffc4e15b..28e246813355 100644 --- a/sc/source/core/data/documen2.cxx +++ b/sc/source/core/data/documen2.cxx @@ -371,6 +371,21 @@ ScDocument::~ScDocument() pRefreshTimerControl = nullptr; } + if (IsClipboardSource()) + { + // Notes copied to the clipboard have a raw SdrCaptionObj pointer + // copied from this document, forget it as it references this + // document's drawing layer pages and what not, which otherwise when + // pasting to another document after this document was destructed would + // attempt to access non-existing data. + /* XXX this is only a workaround to prevent a crash, the actual note + * content is lost, only a standard empty note caption will be pasted. + * TODO: come up with a solution. */ + ScDocument* pClipDoc = ScModule::GetClipDoc(); + if (pClipDoc) + pClipDoc->ForgetNoteCaptions( ScRangeList( ScRange( 0,0,0, MAXCOL, MAXROW, pClipDoc->GetTableCount()-1))); + } + mxFormulaParserPool.reset(); // Destroy the external ref mgr instance here because it has a timer // which needs to be stopped before the app closes. |