Hi, I have submitted a patch for review:
https://gerrit.libreoffice.org/3321 To pull it, you can do: git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/21/3321/1 resolved fdo#63403 do not create matrix with 0 rows or cols Change-Id: Icb0000bde3723c1b37713d0f26ef8305c4a199b8 (cherry picked from commit 7c3ab3bc15cec211767490823539efcada4fe964) --- M sc/source/core/tool/interpr1.cxx M sc/source/core/tool/scmatrix.cxx 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx index 1553a9b..3ed9189 100644 --- a/sc/source/core/tool/interpr1.cxx +++ b/sc/source/core/tool/interpr1.cxx @@ -4591,6 +4591,13 @@ SCCOL nCols; SCROW nRows; pMyFormulaCell->GetMatColsRows( nCols, nRows); + if (nCols == 0) + { + // Happens if called via ScViewFunc::EnterMatrix() + // ScFormulaCell::GetResultDimensions() as of course a + // matrix result is not available yet. + nCols = 1; + } ScMatrixRef pResMat = GetNewMat( static_cast<SCSIZE>(nCols), 1); if (pResMat) { @@ -4667,6 +4674,13 @@ SCCOL nCols; SCROW nRows; pMyFormulaCell->GetMatColsRows( nCols, nRows); + if (nRows == 0) + { + // Happens if called via ScViewFunc::EnterMatrix() + // ScFormulaCell::GetResultDimensions() as of course a + // matrix result is not available yet. + nRows = 1; + } ScMatrixRef pResMat = GetNewMat( 1, static_cast<SCSIZE>(nRows)); if (pResMat) { diff --git a/sc/source/core/tool/scmatrix.cxx b/sc/source/core/tool/scmatrix.cxx index 0a92ffc..e6c2240 100644 --- a/sc/source/core/tool/scmatrix.cxx +++ b/sc/source/core/tool/scmatrix.cxx @@ -1128,17 +1128,26 @@ void ScMatrixImpl::CalcPosition(SCSIZE nIndex, SCSIZE& rC, SCSIZE& rR) const { SCSIZE nRowSize = maMat.size().row; - rC = nIndex / nRowSize; + SAL_WARN_IF( !nRowSize, "sc", "ScMatrixImpl::CalcPosition: 0 rows!"); + rC = nRowSize > 1 ? nIndex / nRowSize : nIndex; rR = nIndex - rC*nRowSize; } // ============================================================================ ScMatrix::ScMatrix( SCSIZE nC, SCSIZE nR) : - pImpl(new ScMatrixImpl(nC, nR)), nRefCnt(0) {} + pImpl(new ScMatrixImpl(nC, nR)), nRefCnt(0) +{ + SAL_WARN_IF( !nC, "sc", "ScMatrix with 0 columns!"); + SAL_WARN_IF( !nR, "sc", "ScMatrix with 0 rows!"); +} ScMatrix::ScMatrix(SCSIZE nC, SCSIZE nR, double fInitVal) : - pImpl(new ScMatrixImpl(nC, nR, fInitVal)), nRefCnt(0) {} + pImpl(new ScMatrixImpl(nC, nR, fInitVal)), nRefCnt(0) +{ + SAL_WARN_IF( !nC, "sc", "ScMatrix with 0 columns!"); + SAL_WARN_IF( !nR, "sc", "ScMatrix with 0 rows!"); +} ScMatrix::~ScMatrix() { -- To view, visit https://gerrit.libreoffice.org/3321 To unsubscribe, visit https://gerrit.libreoffice.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Icb0000bde3723c1b37713d0f26ef8305c4a199b8 Gerrit-PatchSet: 1 Gerrit-Project: core Gerrit-Branch: libreoffice-4-0 Gerrit-Owner: Eike Rathke <er...@redhat.com> _______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice