[Libreoffice-commits] core.git: sc/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Mon Jul 23 13:19:40 UTC 2018


 sc/source/core/tool/compiler.cxx |   11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

New commits:
commit 0549b5dded97cd6b315531baf50a874f5bb53155
Author:     Eike Rathke <erack at redhat.com>
AuthorDate: Mon Jul 23 15:16:18 2018 +0200
Commit:     Eike Rathke <erack at redhat.com>
CommitDate: Mon Jul 23 15:18:18 2018 +0200

    HandleIIOpCode: testing for ForceArray is not sufficient
    
    There are also other "force to array" context modes in which a
    range reference does not result in an implicit intersection.
    
    Change-Id: I3f4d85f73ecde5bbf9f011deeac2936d5f43949b

diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx
index cab029d5e78b..b7e62c52e3df 100644
--- a/sc/source/core/tool/compiler.cxx
+++ b/sc/source/core/tool/compiler.cxx
@@ -5844,9 +5844,18 @@ void ScCompiler::HandleIIOpCode(OpCode nOpCode, formula::ParamClass eClass, Form
         if (nNumParams != 1)
             return;
 
-        if (eClass == formula::ForceArray || mbMatrixFlag)
+        // NOTE: eClass is the CurrentFactor token's GetInForceArray() state,
+        // not the function's parameter classification.
+        if (mbMatrixFlag ||
+                eClass == formula::ForceArray ||
+                eClass == formula::ReferenceOrForceArray ||
+                eClass == formula::SuppressedReferenceOrForceArray)
             return;
 
+        /* TODO: this assumes that there is no function taking a single
+         * parameter that does evaluate a range reference. There currently
+         * isn't any, but we should rather check that. */
+
         if ((*pppToken[0])->GetType() != svDoubleRef)
             return;
 


More information about the Libreoffice-commits mailing list