sc/source/core/data/formulacell.cxx |    9 +++++++++
 1 file changed, 9 insertions(+)

New commits:
commit 3b39360edc104f4ecfed1228b08812388f5126a1
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Sun Oct 29 16:46:23 2023 +0000
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Sun Oct 29 21:44:11 2023 +0100

    crashtesting: dependency tracking doesn't parse ocRange
    
    so only the args passed to ocRange are seen, not what range is
    created from those args, so the dependency detected is just the args
    and not the result
    
    seen with forum-mso-en4-457928.xlsx
    
    
=SUMPRODUCT(--(LEFT(TRIM(Summary.Sections.Type),2)=F24)*Summary.Sections.QCount)
    
    Summary.Sections.Type is
    Summary.SectionType.Start:INDEX(Summary,,COLUMN(Summary.SectionType.EndCol))
    
    Summary.SectionType.Start is
    $Summary.$BD$7
    
    Summary.SectionType.EndCol is
    $Summary.$BG$7
    
    So $BD$7 and $BG$7 are detected as dependencies, but we are really dependent
    on the $BD$7:$BG$7 range, so $BE$7:$BF$7 is not seen
    
    Change-Id: Ia06fe4cb0845994d0221f020cf26ba20866624ef
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158625
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>

diff --git a/sc/source/core/data/formulacell.cxx 
b/sc/source/core/data/formulacell.cxx
index 88970ff75401..f278492b0916 100644
--- a/sc/source/core/data/formulacell.cxx
+++ b/sc/source/core/data/formulacell.cxx
@@ -4512,6 +4512,15 @@ struct ScDependantsCalculator
                 return false;
             }
 
+            if (p->GetOpCode() == ocRange)
+            {
+                // We are just looking at svSingleRef/svDoubleRef, so we will 
miss that ocRange constructs
+                // a range from its arguments, and only examining the 
individual args doesn't capture the
+                // true range of dependencies
+                SAL_WARN("sc.core.formulacell", "dynamic range, dropping as 
candidate for parallelizing");
+                return false;
+            }
+
             switch (p->GetType())
             {
             case svSingleRef:

Reply via email to