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

Eike Rathke erack at redhat.com
Tue Jun 5 07:21:48 UTC 2018


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

New commits:
commit 2d330a5c48fd200db10fba7c40688221185c2dec
Author: Eike Rathke <erack at redhat.com>
Date:   Mon Jun 4 23:05:59 2018 +0200

    Resolves: tdf#117879 preserve formula after inline array error
    
    Use FormulaError::NestedArray for now to be able to backport
    without new string resources. Introduce a more specific error in
    another change.
    
    Change-Id: I49bf731f0b17c81dc6a125718bf104e218e508cc
    Reviewed-on: https://gerrit.libreoffice.org/55300
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Eike Rathke <erack at redhat.com>

diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx
index c91af03eed23..93065ddd0326 100644
--- a/sc/source/core/tool/compiler.cxx
+++ b/sc/source/core/tool/compiler.cxx
@@ -4579,7 +4579,14 @@ ScTokenArray* ScCompiler::CompileString( const OUString& rFormula )
             }
         }
         FormulaToken* pNewToken = static_cast<ScTokenArray*>(pArr)->Add( maRawToken.CreateToken());
-        if (!pNewToken)
+        if (!pNewToken && eOp == ocArrayClose && pArr->OpCodeBefore( pArr->GetLen()) == ocArrayClose)
+        {
+            // Nested inline array or non-value/non-string in array. The
+            // original tokens are still in the ScTokenArray and not merged
+            // into an ScMatrixToken. Set error but keep on tokenizing.
+            SetError( FormulaError::NestedArray);
+        }
+        else if (!pNewToken)
         {
             SetError(FormulaError::CodeOverflow);
             break;


More information about the Libreoffice-commits mailing list