aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorPaolo Carlini <pcarlini@suse.de>2004-04-29 22:07:13 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2004-04-29 22:07:13 +0000
commit59639106944801ba9a9705f29e25b9fb7080617c (patch)
tree16ffb66f1bba7a562833063b1655ef9b2136e06f /libstdc++-v3
parentd2be43686c2390553e6c6446170645f24036b202 (diff)
downloadgcc-59639106944801ba9a9705f29e25b9fb7080617c.zip
gcc-59639106944801ba9a9705f29e25b9fb7080617c.tar.gz
gcc-59639106944801ba9a9705f29e25b9fb7080617c.tar.bz2
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
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog5
-rw-r--r--libstdc++-v3/src/locale.cc14
2 files changed, 12 insertions, 7 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 410070ae..f61c644 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -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.
diff --git a/libstdc++-v3/src/locale.cc b/libstdc++-v3/src/locale.cc
index 0ed2dbb..af4f34d 100644
--- a/libstdc++-v3/src/locale.cc
+++ b/libstdc++-v3/src/locale.cc
@@ -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;
}