locale.cc (locale::operator==): Always avoid constructing locale::name(), directly compare pairs of _M_names.

2004-04-29  Paolo Carlini  <pcarlini@suse.de>

	* src/locale.cc (locale::operator==): Always avoid constructing
	locale::name(), directly compare pairs of _M_names.

From-SVN: r81309
This commit is contained in:
Paolo Carlini 2004-04-29 22:07:13 +00:00 committed by Paolo Carlini
parent d2be43686c
commit 5963910694
2 changed files with 12 additions and 7 deletions

View File

@ -1,3 +1,8 @@
2004-04-29 Paolo Carlini <pcarlini@suse.de>
* src/locale.cc (locale::operator==): Always avoid constructing
locale::name(), directly compare pairs of _M_names.
2004-04-26 Paolo Carlini <pcarlini@suse.de>
* include/bits/istream.tcc: Fix comment.

View File

@ -70,15 +70,15 @@ namespace std
bool
locale::operator==(const locale& __rhs) const throw()
{
bool __ret = false;
bool __ret = true;
if (_M_impl == __rhs._M_impl)
__ret = true;
;
else if (!std::strcmp(_M_impl->_M_names[0], "*"))
__ret = false;
else
{
const string __name = this->name();
if (__name != "*" && __name == __rhs.name())
__ret = true;
}
for (size_t __i = 0; __ret && __i < _S_categories_size; ++__i)
__ret = !std::strcmp(_M_impl->_M_names[__i],
__rhs._M_impl->_M_names[__i]);
return __ret;
}