On Sun, Aug 14, 2016 at 12:07:09PM +0100, Guillaume Munch wrote: > Le 13/08/2016 à 16:45, Enrico Forestieri a écrit : > > commit 7113fb669dcd193295308c44ee2213aa437e38b2 > > Author: Enrico Forestieri <for...@lyx.org> > > Date: Sat Aug 13 17:43:03 2016 +0200 > > > > Correct comment > > > > According to C++11 rules, static locals are thread safe for > > the first-time initialization. > > > > See also: > > > > http://stackoverflow.com/questions/12302057/c11-safe-double-checked-locking-for-lazy-initialization-possible > > --- > > src/graphics/PreviewLoader.cpp | 2 +- > > 1 files changed, 1 insertions(+), 1 deletions(-) > > > > diff --git a/src/graphics/PreviewLoader.cpp b/src/graphics/PreviewLoader.cpp > > index 88f49b0..f3bf437 100644 > > --- a/src/graphics/PreviewLoader.cpp > > +++ b/src/graphics/PreviewLoader.cpp > > @@ -102,7 +102,7 @@ lyx::Converter const * setConverter(string const & from) > > << "\" format has been defined."); > > }); > > #else > > - // This is not thread-safe. > > + // This is also thread-safe according to §6.7.4 of the C++11 standard. > > static bool first = true; > > if (first) { > > first = false; > > > > > I think the threading issue here is that the static variable is used > for synchronizing the calls in the subsequent line. Maybe what you mean > instead by "thread-safe" is that (short of having a drop-in replacement > such as call_once) we do not want to spend so much energy in this > problem because its effect would be trivial. Saying so in a comment > would be helpful for future people reviewing the use of statics in the code. > > Another thing I was not sure about is whether it was really intended > that it will only output one error message independently of the value of > "from". But then I see that it is only ever called for from="lyxpreview".
Hopefully, this important issue has been solved at f323a64f. -- Enrico