diff options
author | Ulrich Drepper <drepper@redhat.com> | 2002-03-10 23:48:25 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2002-03-10 23:48:25 +0000 |
commit | a10e3b428cf30d7a67e7f9d8872878dbbed0fbfa (patch) | |
tree | 305b15c9a5a2b539a18bcdea0ffd0c97bbf3d9fd | |
parent | 26b738be01562bb7cf45e9bcd93838af69a0d9bd (diff) | |
download | gcc-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/ChangeLog | 10 | ||||
-rw-r--r-- | libstdc++-v3/config/locale/generic/collate_members.cc | 10 | ||||
-rw-r--r-- | libstdc++-v3/config/locale/gnu/collate_members.cc | 10 |
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 |