[Libreoffice-commits] core.git: Branch 'aoo/trunk' - sc/source

Damjan Jovanovic damjan at apache.org
Wed Feb 17 02:07:59 UTC 2016


 sc/source/core/data/document.cxx |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

New commits:
commit 71de3699a30267d989ef78096477d9ecca329974
Author: Damjan Jovanovic <damjan at apache.org>
Date:   Wed Feb 17 00:03:50 2016 +0000

    #i118023# Calc: Cut-and-paste between spreadsheets causes incorrect cell reference changes
    
    When pasting cut cells, Calc updates references to their old positions
    to instead refer to their new positions. This is done using the tab index,
    row and column, however the document is not taken into account. As a result,
    when cutting and pasting between documents, cells in the target document
    end up getting changed instead of in the source, potentially leading to
    formula corruption, which is undoable but could easily go unnoticed,
    causing data loss when the document is saved.
    
    We don't really support inter-document reference updates anyway, so fix
    this bug by restricting reference updates to the intra-document cut and
    paste case only.
    
    Patch by: me
    Reviewed by: kschenk

diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index 2aefa7a..0ccf481 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -1965,7 +1965,8 @@ void ScDocument::CopyBlockFromClip( SCCOL nCol1, SCROW nRow1,
             nClipTab = (nClipTab+1) % (MAXTAB+1);
         }
     }
-    if ( pCBFCP->nInsFlag & IDF_CONTENTS )
+    if ( (pCBFCP->nInsFlag & IDF_CONTENTS) &&
+            (pCBFCP->pClipDoc->GetClipParam().getSourceDocID() == GetDocumentID()) ) // #118023# only update references for *intra-document* cut and paste
     {
         nClipTab = 0;
         for (SCTAB i = pCBFCP->nTabStart; i <= nTabEnd; i++)


More information about the Libreoffice-commits mailing list