]> git.lyx.org Git - lyx.git/blobdiff - src/sgml.cpp
Provide proper fallback if a bibliography processor is not found
[lyx.git] / src / sgml.cpp
index b193593fab7b1ac6753b3cd71c3f8b2affb5174b..2facb3ed539e280d459fed50a9f9fba1ba7f3b48 100644 (file)
@@ -27,6 +27,7 @@
 #include "support/lstrings.h"
 #include "support/textutils.h"
 
+#include <atomic>
 #include <map>
 #include <QThreadStorage>
 
@@ -105,10 +106,8 @@ docstring sgml::escapeString(docstring const & raw)
 
 docstring const sgml::uniqueID(docstring const & label)
 {
-       // FIXME THREAD
-       // It seems unlikely there could be a problem here,
-       // but we could have concurrent access, in principle.
-       static unsigned int seed = 1000;
+       // thread-safe
+       static atomic_uint seed(1000);
        return label + convert<docstring>(++seed);
 }
 
@@ -141,7 +140,6 @@ docstring sgml::cleanID(Buffer const & buf, OutputParams const & runparams,
        static QThreadStorage<int> tMangleID;
 
        MangledMap & mangledNames = tMangledNames.localData();
-       int & mangleID = tMangleID.localData();
 
        MangledMap::const_iterator const known = mangledNames.find(orig);
        if (known != mangledNames.end())
@@ -170,9 +168,10 @@ docstring sgml::cleanID(Buffer const & buf, OutputParams const & runparams,
                }
        }
 
-       if (mangle)
+       if (mangle) {
+               int & mangleID = tMangleID.localData();
                content += "-" + convert<docstring>(mangleID++);
-       else if (isDigitASCII(content[content.size() - 1]))
+       else if (isDigitASCII(content[content.size() - 1]))
                content += ".";
 
        mangledNames[orig] = content;