On 10/10/2013 23:12, Georg Baum wrote:
Vincent van Ravesteijn wrote:

The other difference I noticed is that on Cygwin and Solaris I get
\renewcommand instead of \newcommand. That is, applying your patch,
on Debian exporting from the GUI or from command line, produces the
same result, but lyx segafaults on exit.
On Cygwin and Solaris, exporting from the GUI changes \newcommand
into \renewcommand, but lyx quits normally.
The joy of multithreading, I suppose.

I guess the problem is that the class MacroData has a lot of mutable
variables that are being changed from const metrics() and write()
functions.
Yes, this is likely. Basically, all these changes are only needed for the
lazy macros which are created in Buffer.cpp:3229. There is even a FIXME
comment by Abdel asking why a full macro is not used. After reading the code
a bit I have to admit that it is quite confusing. Also other parts of the
macro machinery ignore the constness concept where ever needed.

AFAIR I wanted to merge the macro update machinery with the buffer/toc update ones...

Abdel.


Reply via email to