[Libreoffice-commits] core.git: Branch 'libreoffice-5-3-0' - sc/source

Eike Rathke erack at redhat.com
Thu Jan 26 22:16:56 UTC 2017


 sc/source/core/data/documen2.cxx |   15 +++++++++++++++
 1 file changed, 15 insertions(+)

New commits:
commit 3097bdd13ab3b1a0e16da862cb46614025bce504
Author: Eike Rathke <erack at redhat.com>
Date:   Wed Jan 18 16:18:38 2017 +0100

    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/33275
    Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
    Reviewed-by: Michael Stahl <mstahl at redhat.com>
    Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>
    Tested-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>

diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx
index 766aa9f..f884bcd 100644
--- a/sc/source/core/data/documen2.cxx
+++ b/sc/source/core/data/documen2.cxx
@@ -373,6 +373,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.


More information about the Libreoffice-commits mailing list