sc/inc/formulacell.hxx              |    4 +++-
 sc/source/core/data/formulacell.cxx |    3 +++
 2 files changed, 6 insertions(+), 1 deletion(-)

New commits:
commit 6d9b2713b100d7f158d01a9f7eb22072dc014f00
Author:     Luboš Luňák <l.lu...@collabora.com>
AuthorDate: Tue Mar 12 11:59:29 2019 +0100
Commit:     Luboš Luňák <l.lu...@collabora.com>
CommitDate: Wed Mar 13 11:07:42 2019 +0100

    state explicitly how ownership of ScFormulaCell::pCode works
    
    Change-Id: I7c2938cd731ed85dd0f96ac41d0f0a1468ee858c
    Reviewed-on: https://gerrit.libreoffice.org/69089
    Tested-by: Jenkins
    Reviewed-by: Luboš Luňák <l.lu...@collabora.com>

diff --git a/sc/inc/formulacell.hxx b/sc/inc/formulacell.hxx
index ec7c61171ae7..93c18cabcee7 100644
--- a/sc/inc/formulacell.hxx
+++ b/sc/inc/formulacell.hxx
@@ -128,7 +128,9 @@ private:
     SvNumFormatType nFormatType      : 16;
     ScFormulaResult aResult;
     formula::FormulaGrammar::Grammar  eTempGrammar;   // used between string 
(creation) and (re)compilation
-    ScTokenArray*   pCode;              // The (new) token array
+    // If this cell is in a cell group (mxGroup!=nullptr), then this pCode is 
a not-owning pointer
+    // to the mxGroup's mpCode, which owns the array. If the cell is not in a 
group, this is an owning pointer.
+    ScTokenArray*   pCode;              // The token array
     ScDocument*     pDocument;
     ScFormulaCell*  pPrevious;
     ScFormulaCell*  pNext;
diff --git a/sc/source/core/data/formulacell.cxx 
b/sc/source/core/data/formulacell.cxx
index 782e3d499517..17dc29811ae5 100644
--- a/sc/source/core/data/formulacell.cxx
+++ b/sc/source/core/data/formulacell.cxx
@@ -1124,6 +1124,7 @@ void ScFormulaCell::Compile( const OUString& rFormula, 
bool bNoListening,
     ScTokenArray* pCodeOld = pCode;
     ScCompiler aComp( pDocument, aPos, eGrammar);
     pCode = aComp.CompileString( rFormula ).release();
+    assert(!mxGroup);
     delete pCodeOld;
     if( pCode->GetCodeError() == FormulaError::NONE )
     {
@@ -1158,6 +1159,7 @@ void ScFormulaCell::Compile(
     ScTokenArray* pCodeOld = pCode;
     ScCompiler aComp(rCxt, aPos);
     pCode = aComp.CompileString( rFormula ).release();
+    assert(!mxGroup);
     delete pCodeOld;
     if( pCode->GetCodeError() == FormulaError::NONE )
     {
@@ -1334,6 +1336,7 @@ void ScFormulaCell::CompileXML( 
sc::CompileFormulaContext& rCxt, ScProgress& rPr
     {
         ScTokenArray* pCodeOld = pCode;
         pCode = aComp.CompileString( aFormula, aFormulaNmsp ).release();
+        assert(!mxGroup);
         delete pCodeOld;
 
         if( pCode->GetCodeError() == FormulaError::NONE )
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to