Resolves: tdf#158789 operate on query array if no extra array or range given
Also push error and bail out early if there was an error, or more important pResultMatrix is nullptr. Change-Id: I1094ed9d14795ea1bc3f4ff61d687cc28d0b94fb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168300 Tested-by: Jenkins Reviewed-by: Eike Rathke <erack@redhat.com>
This commit is contained in:
@@ -5740,7 +5740,8 @@ void ScInterpreter::IterateParametersIf( ScIterFuncIf eFunc )
|
||||
ScMatrixRef pResultMatrix = QueryMat( pQueryMatrix, aOptions);
|
||||
if (nGlobalError != FormulaError::NONE || !pResultMatrix)
|
||||
{
|
||||
SetError( FormulaError::IllegalParameter);
|
||||
PushIllegalParameter();
|
||||
return;
|
||||
}
|
||||
|
||||
if (pSumExtraMatrix)
|
||||
@@ -5764,6 +5765,25 @@ void ScInterpreter::IterateParametersIf( ScIterFuncIf eFunc )
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!bSumExtraRange)
|
||||
{
|
||||
for (SCCOL nCol = nCol1; nCol <= nCol2; ++nCol)
|
||||
{
|
||||
for (SCROW nRow = nRow1; nRow <= nRow2; ++nRow)
|
||||
{
|
||||
if (pResultMatrix->IsValue( nCol, nRow) &&
|
||||
pResultMatrix->GetDouble( nCol, nRow))
|
||||
{
|
||||
if (pQueryMatrix->IsValue( nCol, nRow))
|
||||
{
|
||||
fVal = pQueryMatrix->GetDouble( nCol, nRow);
|
||||
++fCount;
|
||||
fSum += fVal;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (SCCOL nCol = nCol1; nCol <= nCol2; ++nCol)
|
||||
|
||||
Reference in New Issue
Block a user