Browse Source

Fix race when accessing std::locale::classic()

See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78552
0.14
Matt Corallo 8 years ago
parent
commit
507145d785
  1. 3
      src/utiltime.cpp

3
src/utiltime.cpp

@ -74,8 +74,9 @@ void MilliSleep(int64_t n)
std::string DateTimeStrFormat(const char* pszFormat, int64_t nTime) std::string DateTimeStrFormat(const char* pszFormat, int64_t nTime)
{ {
static std::locale classic(std::locale::classic());
// std::locale takes ownership of the pointer // std::locale takes ownership of the pointer
std::locale loc(std::locale::classic(), new boost::posix_time::time_facet(pszFormat)); std::locale loc(classic, new boost::posix_time::time_facet(pszFormat));
std::stringstream ss; std::stringstream ss;
ss.imbue(loc); ss.imbue(loc);
ss << boost::posix_time::from_time_t(nTime); ss << boost::posix_time::from_time_t(nTime);

Loading…
Cancel
Save