From: redi Date: Wed, 9 Oct 2019 12:55:39 +0000 (+0000) Subject: PR libstdc++/78552 only construct std::locale for C locale once X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9afd65f86a5defcf580108014adcffcd5109874a;p=thirdparty%2Fgcc.git PR libstdc++/78552 only construct std::locale for C locale once PR libstdc++/78552 * src/c++98/locale_init.cc (locale::classic()): Do not construct a new locale object for every call. (locale::_S_initialize_once()): Construct C locale here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@276758 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 7f08a552376d..47f0ce86d968 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2019-10-09 Jonathan Wakely + + PR libstdc++/78552 + * src/c++98/locale_init.cc (locale::classic()): Do not construct a new + locale object for every call. + (locale::_S_initialize_once()): Construct C locale here. + 2019-10-08 Jonathan Wakely * doc/Makefile.am (doc-html-docbook-regenerate): New target. diff --git a/libstdc++-v3/src/c++98/locale_init.cc b/libstdc++-v3/src/c++98/locale_init.cc index e5e9d74379f5..07d95dc09fd8 100644 --- a/libstdc++-v3/src/c++98/locale_init.cc +++ b/libstdc++-v3/src/c++98/locale_init.cc @@ -303,7 +303,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION locale::classic() { _S_initialize(); - return *(new (&c_locale) locale(_S_classic)); + return *(const locale*)c_locale; } void @@ -313,6 +313,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // One reference for _S_classic, one for _S_global _S_classic = new (&c_locale_impl) _Impl(2); _S_global = _S_classic; + new (&c_locale) locale(_S_classic); } void