Browse Source

Merge pull request #5877

317e66c Initialization: set Boost path locale in main thread (dexX7)
0.13
Wladimir J. van der Laan 10 years ago
parent
commit
28cc24f961
No known key found for this signature in database
GPG Key ID: 74810B012346C9A6
  1. 18
      src/util.cpp

18
src/util.cpp

@ -723,18 +723,18 @@ void RenameThread(const char* name) @@ -723,18 +723,18 @@ void RenameThread(const char* name)
void SetupEnvironment()
{
#ifndef WIN32
try
{
#if BOOST_FILESYSTEM_VERSION == 3
boost::filesystem::path::codecvt(); // Raises runtime error if current locale is invalid
#else // boost filesystem v2
std::locale(); // Raises runtime error if current locale is invalid
#endif
// On most POSIX systems (e.g. Linux, but not BSD) the environment's locale
// may be invalid, in which case the "C" locale is used as fallback.
#if !defined(WIN32) && !defined(MAC_OSX) && !defined(__FreeBSD__) && !defined(__OpenBSD__)
try {
std::locale(""); // Raises a runtime error if current locale is invalid
} catch (const std::runtime_error&) {
setenv("LC_ALL", "C", 1); // Force C locale
std::locale::global(std::locale("C"));
}
#endif
// The path locale is lazy initialized and to avoid deinitialization errors
// in multithreading environments, it is set explicitly by the main thread.
boost::filesystem::path::imbue(std::locale());
}
void SetThreadPriority(int nPriority)

Loading…
Cancel
Save