Make static variables used in DocBook output thread-safe.

This commit is contained in:
Richard Heck 2014-10-26 12:53:41 -04:00
parent de3daf040b
commit 452a7a500c

View File

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