commit 452a7a500c78aeb04f5a2695a368cfdc1efd4c0d
Author: Richard Heck <[email protected]>
Date:   Sun Oct 26 12:53:41 2014 -0400

    Make static variables used in DocBook output thread-safe.

diff --git a/src/sgml.cpp b/src/sgml.cpp
index fdd0ed7..125ef61 100644
--- a/src/sgml.cpp
+++ b/src/sgml.cpp
@@ -26,6 +26,7 @@
 #include "support/docstream.h"
 #include "support/lstrings.h"
 #include "support/textutils.h"
+#include "support/ThreadStorage.h"
 
 #include <map>
 
@@ -135,10 +136,11 @@ docstring sgml::cleanID(Buffer const & buf, OutputParams 
const & runparams,
 
        docstring content;
 
-       // FIXME THREAD
        typedef map<docstring, docstring> MangledMap;
-       static MangledMap mangledNames;
-       static int mangleID = 1;
+       static ThreadStorage<MangledMap> tMangledNames;
+       MangledMap & mangledNames = *tMangledNames;
+       static ThreadStorage<int> tMangleID;
+       int & mangleID = *tMangleID;
 
        MangledMap::const_iterator const known = mangledNames.find(orig);
        if (known != mangledNames.end())

Reply via email to