summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2016-10-12 19:47:44 +0200
committerEike Rathke <erack@redhat.com>2016-10-12 19:48:55 +0200
commitd3645961d98ce9f0cfb1ef7f0aba7bf020b90945 (patch)
tree1c8abea94008f8a14b4da8b9fb3a73489a3f71d3
parentc76f90da1c54cd497c6dce6bdaeeb919f2cbe82b (diff)
create NoName error token instead of setting error at the token array
... when handling name token. This can happen when importing BIFF .xls and the original range is not present in the document. The document is broken, but such formula can continue to work if the range expression was not actually executed, for example IF(TRUE(),then_good,else_bad_range) where else_bad_range is #NAME? error. Change-Id: I823ac89115418cf5069b2baf5c5de2c814319ae7
-rw-r--r--sc/source/core/tool/compiler.cxx12
1 files changed, 10 insertions, 2 deletions
diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx
index 589bb9b94a19..834c7ab3cd75 100644
--- a/sc/source/core/tool/compiler.cxx
+++ b/sc/source/core/tool/compiler.cxx
@@ -4659,6 +4659,7 @@ ScRangeData* ScCompiler::GetRangeData( const FormulaToken& rToken ) const
bool ScCompiler::HandleRange()
{
+ ScTokenArray* pNew;
const ScRangeData* pRangeData = GetRangeData( *mpToken);
if (pRangeData)
{
@@ -4667,7 +4668,6 @@ bool ScCompiler::HandleRange()
SetError( FormulaError::NoName );
else if (mbJumpCommandReorder)
{
- ScTokenArray* pNew;
// put named formula into parentheses.
// But only if there aren't any yet, parenthetical
// ocSep doesn't work, e.g. SUM((...;...))
@@ -4716,7 +4716,15 @@ bool ScCompiler::HandleRange()
}
}
else
- SetError(FormulaError::NoName);
+ {
+ // No ScRangeData for an already compiled token can happen in BIFF .xls
+ // import if the original range is not present in the document.
+ pNew = new ScTokenArray;
+ pNew->Add( new FormulaErrorToken( FormulaError::NoName));
+ PushTokenArray( pNew, true );
+ pNew->Reset();
+ return GetToken();
+ }
return true;
}