#include "support/lstrings.h"
#include "support/textutils.h"
+#include <atomic>
#include <map>
#include <QThreadStorage>
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);
}
static QThreadStorage<int> tMangleID;
MangledMap & mangledNames = tMangledNames.localData();
- int & mangleID = tMangleID.localData();
MangledMap::const_iterator const known = mangledNames.find(orig);
if (known != mangledNames.end())
}
}
- 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;