fdo 37341 MAXRECURSION reached in ScFormulaCell::Interpret

Winfried Donkers W.Donkers at dci-electronics.nl
Thu Jul 11 22:43:48 PDT 2013


Hi Kohei,

> > To me just increasing MAXRECURSION to 800 is a dirty hack.
> Yup.  I wouldn't go there if I were you.
I won't.

> Actually, I'm just wondering why that code is even in ScInterpreter.
> The goalseek functionality is not a cell function, and I would expect a code
> like that to be outside of ScInterpreter. This is just my guess, but because we
> are putting a code that does its own iterative calculation on top of the
> recursive interpretation that ScInterpreter already does, it is somehow not
> resetting the recursion counter in each iteration.  Maybe you can see if the
> recursion counter is really zero when the formula calls Interpret() in each
> iteration...  In theory the recursion count should be zero when each iteration
> ends.

I had already started creating traces to check the recursion count.
 
> If you take a look at ScDocument::Solver, it actually creates a fake formula
> cell instance and stuff it with fake formula expression to perform this goal
> seek.  Why not move this code from its current location
> (ScInterpreter::ScBackSolver) into ScDocument::Solver and eliminate this
> awkward indirection?

I will definitively have a look at ScDocument::Solver, thank you for your suggestion.


Winfried



More information about the LibreOffice mailing list