From 531b0a3172ed423175d7ebbf317cd79f4613735e Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Wed, 9 Oct 2019 13:55:39 +0100 Subject: [PATCH] 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. From-SVN: r276758 --- libstdc++-v3/ChangeLog | 7 +++++++ libstdc++-v3/src/c++98/locale_init.cc | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 7f08a552376..47f0ce86d96 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 e5e9d74379f..07d95dc09fd 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 -- 2.30.2