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. Georg