summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2017-12-20 21:32:55 +0100
committerEike Rathke <erack@redhat.com>2017-12-21 01:10:57 +0100
commitb366adcf5aca8bb22ccd0dd270ab08e9c8976b5b (patch)
tree3cdb7c2909e86cb084b633053d5291b678cf3bbf /sc
parentf6c2fd1ce58a8f34483177c0b240c53a7866faf9 (diff)
Invert logic, include only known good, tdf#114251 related
Change-Id: Ic362ad6c35f7f6374fc262029251e48e4f82d778 Reviewed-on: https://gerrit.libreoffice.org/46863 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins <ci@libreoffice.org>
Diffstat (limited to 'sc')
-rw-r--r--sc/source/core/tool/token.cxx33
1 files changed, 31 insertions, 2 deletions
diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx
index bb7ecc9650a9..6979ed459bb7 100644
--- a/sc/source/core/tool/token.cxx
+++ b/sc/source/core/tool/token.cxx
@@ -1670,11 +1670,18 @@ void ScTokenArray::CheckToken( const FormulaToken& r )
// All the rest, special commands, separators, error codes, ...
switch (eOp)
{
+ default:
+ // Default is off, no vectorization.
+ // Mentioning some specific values below to indicate why.
+
case ocName:
// Named expression would need "recursive" handling of its
// token array for vector state in
// ScFormulaCell::InterpretFormulaGroup() and below.
+ case ocDBArea:
+ // Certainly not a vectorization of the entire area..
+
case ocTableRef:
// May result in a single cell or range reference, depending on
// context.
@@ -1692,8 +1699,30 @@ void ScTokenArray::CheckToken( const FormulaToken& r )
mbOpenCLEnabled = false;
CheckForThreading(eOp);
break;
- default:
- ; // nothing
+
+ // Known good, don't change state.
+ case ocStop:
+ case ocExternal:
+ case ocOpen:
+ case ocClose:
+ case ocSep:
+ case ocArrayOpen:
+ case ocArrayRowSep:
+ case ocArrayColSep:
+ case ocArrayClose:
+ case ocMissing:
+ case ocBad:
+ case ocSpaces:
+ case ocSkip:
+ case ocPercentSign:
+ case ocErrNull:
+ case ocErrDivZero:
+ case ocErrValue:
+ case ocErrRef:
+ case ocErrName:
+ case ocErrNum:
+ case ocErrNA:
+ break;
}
}
}