[Libreoffice-commits] core.git: sc/source
Eike Rathke
erack at redhat.com
Tue Aug 2 18:06:06 UTC 2016
sc/source/core/data/column4.cxx | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
New commits:
commit c82a81bbda104ef08dd9e18725a09475b2d65183
Author: Eike Rathke <erack at redhat.com>
Date: Tue Aug 2 19:55:08 2016 +0200
Resolves: tdf#100582 SetMatColsRows() when constructing matrix ScFormulaCell
... from an ScFormulaCellGroup token array, because ScFormulaResult that holds
the matrix dimensions is not cloned in that case as we don't clone from an
ScFormulaCell.
Change-Id: I13ab1b29db71ae1618580de995fe12ec423d4dc7
diff --git a/sc/source/core/data/column4.cxx b/sc/source/core/data/column4.cxx
index f46c6ae..0b7bc6a 100644
--- a/sc/source/core/data/column4.cxx
+++ b/sc/source/core/data/column4.cxx
@@ -483,6 +483,16 @@ void ScColumn::CloneFormulaCell(
sc::CellStoreType::iterator itPos = maCells.begin();
sc::CellTextAttrStoreType::iterator itAttrPos = maCellTextAttrs.begin();
+ SCCOL nMatrixCols = 0;
+ SCROW nMatrixRows = 0;
+ sal_uInt8 nMatrixFlag = rSrc.GetMatrixFlag();
+ if (nMatrixFlag == MM_FORMULA)
+ {
+ rSrc.GetMatColsRows( nMatrixCols, nMatrixRows);
+ SAL_WARN_IF( nMatrixCols != 1 || nMatrixRows != 1, "sc.core",
+ "ScColumn::CloneFormulaCell - cloning array/matrix with not exactly one column or row as single cell");
+ }
+
std::vector<ScFormulaCell*> aFormulas;
std::vector<sc::RowSpan>::const_iterator itSpan = rRanges.begin(), itSpanEnd = rRanges.end();
for (; itSpan != itSpanEnd; ++itSpan)
@@ -514,7 +524,9 @@ void ScColumn::CloneFormulaCell(
xGroup->compileCode(*pDocument, aPos, pDocument->GetGrammar());
for (size_t i = 0; i < nLen; ++i, aPos.IncRow())
{
- ScFormulaCell* pCell = new ScFormulaCell(pDocument, aPos, xGroup, pDocument->GetGrammar(), rSrc.GetMatrixFlag());
+ ScFormulaCell* pCell = new ScFormulaCell(pDocument, aPos, xGroup, pDocument->GetGrammar(), nMatrixFlag);
+ if (nMatrixFlag == MM_FORMULA)
+ pCell->SetMatColsRows( nMatrixCols, nMatrixRows);
if (i == 0)
{
xGroup->mpTopCell = pCell;
More information about the Libreoffice-commits
mailing list