On 08/02/2013 02:28 AM, Winfried Donkers wrote:
Hi Kohei,
If the culprit seems to be within ScFormulaCell::Interpret() then, well, ... I can't say much else
would help than stepping through these calls and keeping track of what called >which in what state.
The old code had some debugging/tracing facilities that generated a .dot file from within
ScFormulaCell::Interpret() but unfortunately got completely removed with
5ff49e8ce958deb8217880b2aaf2bd41a567e8a1 (these are the cases where I don't understand blind removal
of #ifdef'ed code) so for testing purposes you might want to >revive the part of
sc/source/core/data/cell.cxx of that change into sc/source/core/data/formulacell.cxx
As you seem to be the expert on formulacell.cxx and the (Back)Solver() code, I hope you can shed
some light on this problem.
I'm afraid I cannot.
To be brutally honest, I wouldn't debug this without first moving this
code out of ScInterpreter and into a place like ScDocument::Solver()
without those pesky temporary formula cell and temporary formula
expression creation steps. That's basically the strategy I first
advised. The current code is mixing recursion and iteration together,
which is a recipe for trouble. There is no way you can debug this and
stay sane. I would go nuts if I were forced to debug this code in its
current form.
So, I would still stick with my original advice, and recommend we move
this code out of the interpreter.
Kohei
--
Kohei Yoshida, LibreOffice Calc hacker, SUSE.
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.