fix undoing range reducing to apply only to COUNTIFS (tdf#150618)

Before 7674399aac the code tried
to range-reduce all operations except for COUNTIFS, the commit added
handling also COUNTIFS and then later undo the rare cases when it
shouldn't be done, but the undo wasn't specific to COUNTIFS even
though it should have.

Change-Id: Ibdb6516a1ac7bc7d34f16f8a99781859e9fc7b60
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138880
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
This commit is contained in:
Luboš Luňák
2022-08-26 16:10:38 +02:00
parent 37376f6300
commit 690458889f

View File

@@ -6092,9 +6092,10 @@ void ScInterpreter::IterateParametersIfs( double(*ResultFunc)( const sc::ParamIf
rParam.eSearchType = DetectSearchType(rItem.maString.getString(), mrDoc);
}
// Undo bRangeReduce if asked to match empty cells (which should be rare).
// Undo bRangeReduce if asked to match empty cells for COUNTIFS (which should be rare).
assert(rEntry.GetQueryItems().size() == 1);
if((rEntry.IsQueryByEmpty() || rItem.mbMatchEmpty) && bRangeReduce)
const bool isCountIfs = (nParamCount % 2) == 0;
if(isCountIfs && (rEntry.IsQueryByEmpty() || rItem.mbMatchEmpty) && bRangeReduce)
{
bRangeReduce = false;
// All criteria ranges are svDoubleRef's, so only vConditions needs adjusting.