summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2017-12-20 21:32:55 +0100
committerEike Rathke <erack@redhat.com>2017-12-22 00:12:00 +0100
commit16d75204418455c0d9dff13607432dae33a7566e (patch)
treecc9b1c3b0a4aab02e60d8d71ac1e3deba108960e
parent409f32c514a85ac735f82cbf36308c1709b569ec (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> (cherry picked from commit b366adcf5aca8bb22ccd0dd270ab08e9c8976b5b) Reviewed-on: https://gerrit.libreoffice.org/46877 Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-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 396c25537ffb..089ed5b5f48d 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;
}
}
}