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
This commit is contained in:
Jonathan Wakely 2019-10-09 13:55:39 +01:00 committed by Jonathan Wakely
parent 6bbead0c5a
commit 531b0a3172
2 changed files with 9 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2019-10-09 Jonathan Wakely <jwakely@redhat.com>
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 <jwakely@redhat.com>
* doc/Makefile.am (doc-html-docbook-regenerate): New target.

View File

@ -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