aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2002-03-10 23:48:25 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2002-03-10 23:48:25 +0000
commita10e3b428cf30d7a67e7f9d8872878dbbed0fbfa (patch)
tree305b15c9a5a2b539a18bcdea0ffd0c97bbf3d9fd
parent26b738be01562bb7cf45e9bcd93838af69a0d9bd (diff)
downloadgcc-a10e3b428cf30d7a67e7f9d8872878dbbed0fbfa.zip
gcc-a10e3b428cf30d7a67e7f9d8872878dbbed0fbfa.tar.gz
gcc-a10e3b428cf30d7a67e7f9d8872878dbbed0fbfa.tar.bz2
2002-03-09 Ulrich Drepper <drepper@redhat.com>
Paolo Carlini <pcarlini@unitus.it> * config/locale/generic/collate_members.cc (collate<char,wchar_t>::_M_compare_helper): normalize values returned by strcoll and wcscoll. * config/locale/gnu/collate_members.cc (collate<char,wchar_t>::_M_compare_helper): ditto for __strcoll_l and __wcscoll_l. Co-Authored-By: Paolo Carlini <pcarlini@unitus.it> From-SVN: r50551
-rw-r--r--libstdc++-v3/ChangeLog10
-rw-r--r--libstdc++-v3/config/locale/generic/collate_members.cc10
-rw-r--r--libstdc++-v3/config/locale/gnu/collate_members.cc10
3 files changed, 26 insertions, 4 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 10db4b4..0ed3aa3 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,13 @@
+2002-03-10 Ulrich Drepper <drepper@redhat.com>
+ Paolo Carlini <pcarlini@unitus.it>
+
+ * config/locale/generic/collate_members.cc
+ (collate<char,wchar_t>::_M_compare_helper): normalize
+ values returned by strcoll and wcscoll.
+ * config/locale/gnu/collate_members.cc
+ (collate<char,wchar_t>::_M_compare_helper): ditto
+ for __strcoll_l and __wcscoll_l.
+
2002-03-10 Anthony Green <green@redhat.com>
* configure.in: Support cross builds to mingw32 target.
diff --git a/libstdc++-v3/config/locale/generic/collate_members.cc b/libstdc++-v3/config/locale/generic/collate_members.cc
index 0abd784..085f766 100644
--- a/libstdc++-v3/config/locale/generic/collate_members.cc
+++ b/libstdc++-v3/config/locale/generic/collate_members.cc
@@ -43,7 +43,10 @@ namespace std
int
collate<char>::_M_compare_helper(const char* __one,
const char* __two) const
- { return strcoll(__one, __two); }
+ {
+ int __cmp = strcoll(__one, __two);
+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
+ }
template<>
size_t
@@ -56,7 +59,10 @@ namespace std
int
collate<wchar_t>::_M_compare_helper(const wchar_t* __one,
const wchar_t* __two) const
- { return wcscoll(__one, __two); }
+ {
+ int __cmp = wcscoll(__one, __two);
+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
+ }
template<>
size_t
diff --git a/libstdc++-v3/config/locale/gnu/collate_members.cc b/libstdc++-v3/config/locale/gnu/collate_members.cc
index 8e3952e..d023d53 100644
--- a/libstdc++-v3/config/locale/gnu/collate_members.cc
+++ b/libstdc++-v3/config/locale/gnu/collate_members.cc
@@ -43,7 +43,10 @@ namespace std
int
collate<char>::_M_compare_helper(const char* __one,
const char* __two) const
- { return __strcoll_l(__one, __two, _M_c_locale_collate); }
+ {
+ int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate);
+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
+ }
template<>
size_t
@@ -56,7 +59,10 @@ namespace std
int
collate<wchar_t>::_M_compare_helper(const wchar_t* __one,
const wchar_t* __two) const
- { return __wcscoll_l(__one, __two, _M_c_locale_collate); }
+ {
+ int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate);
+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
+ }
template<>
size_t