From 690458889fd875a7885b692d3204c45c5016b925 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubo=C5=A1=20Lu=C5=88=C3=A1k?= Date: Fri, 26 Aug 2022 16:10:38 +0200 Subject: [PATCH] fix undoing range reducing to apply only to COUNTIFS (tdf#150618) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before 7674399aac661eb503d7badc53b9a4d68bd9839d 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 --- sc/source/core/tool/interpr1.cxx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx index 957d93005375..9eb660386e97 100644 --- a/sc/source/core/tool/interpr1.cxx +++ b/sc/source/core/tool/interpr1.cxx @@ -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.