From 99014ec9ded70a679220fe59e09ab4073512c249 Mon Sep 17 00:00:00 2001 From: Luboš Luňák Date: Wed, 28 Nov 2018 15:32:20 +0100 Subject: make sure FetchVectorRefArray() never triggers Interpret() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- sc/inc/column.hxx | 3 +++ 1 file changed, 3 insertions(+) (limited to 'sc/inc/column.hxx') 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 ); -- cgit