diff options
author | Luboš Luňák <l.lunak@collabora.com> | 2018-11-28 15:32:20 +0100 |
---|---|---|
committer | Luboš Luňák <l.lunak@collabora.com> | 2018-12-03 15:32:45 +0100 |
commit | 99014ec9ded70a679220fe59e09ab4073512c249 (patch) | |
tree | 7fab6d6e3a965bcbae8ae84514f894ff3c875f7b /sc/inc/column.hxx | |
parent | 1b489b74fe28007749bec8a3ebd56901a7652734 (diff) |
make sure FetchVectorRefArray() never triggers Interpret()
Test::testFormulaRefUpdateRange could trigger this, leading to recursion
that wasn't handled properly by the code, since it wasn't expected
to happen at late time (ScDependantsCalculator should have already
caught it). This is all caused by the fact that FetchVectorRefArray()
fetches also all rows before the given rows (to make the caching simpler
I suppose). But that fetching could lead to Interpret() calls.
Therefore, make ScDependantsCalculator in OpenCL mode check also all
rows above.
Change-Id: Iaecc105663df21b01443759287cec605470d34a5
Reviewed-on: https://gerrit.libreoffice.org/64236
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
Diffstat (limited to 'sc/inc/column.hxx')
-rw-r--r-- | sc/inc/column.hxx | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx index bdaeccde0afe..0a328f001ce4 100644 --- a/sc/inc/column.hxx +++ b/sc/inc/column.hxx @@ -575,6 +575,9 @@ public: void FillMatrix( ScMatrix& rMat, size_t nMatCol, SCROW nRow1, SCROW nRow2, svl::SharedStringPool* pPool ) const; formula::VectorRefArray FetchVectorRefArray( SCROW nRow1, SCROW nRow2 ); bool HandleRefArrayForParallelism( SCROW nRow1, SCROW nRow2, const ScFormulaCellGroupRef& mxGroup ); +#ifdef DBG_UTIL + void AssertNoInterpretNeeded( SCROW nRow1, SCROW nRow2 ); +#endif void SetFormulaResults( SCROW nRow, const double* pResults, size_t nLen ); void CalculateInThread( ScInterpreterContext& rContext, SCROW nRow, size_t nLen, unsigned nThisThread, unsigned nThreadsTotal ); |