diff options
author | Eike Rathke <erack@redhat.com> | 2018-06-04 23:05:59 +0200 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2018-06-05 10:30:32 +0200 |
commit | 999c9cd13c5c0d17569ce58a14b7047cf379eb7e (patch) | |
tree | 152e00f3dc7ccdcbe313c42a9023f6c093be70f9 | |
parent | 47ccfe2c92027458287bd91f9df891e319e08d04 (diff) |
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@redhat.com>
Tested-by: Eike Rathke <erack@redhat.com>
(cherry picked from commit 2d330a5c48fd200db10fba7c40688221185c2dec)
Reviewed-on: https://gerrit.libreoffice.org/55307
Tested-by: Jenkins <ci@libreoffice.org>
-rw-r--r-- | sc/source/core/tool/compiler.cxx | 9 |
1 files changed, 8 insertions, 1 deletions
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; |