diff options
author | Aaron W. LaFramboise <awlaframboise@aol.com> | 2002-02-11 18:56:24 +0000 |
---|---|---|
committer | Benjamin Kosnik <bkoz@gcc.gnu.org> | 2002-02-11 18:56:24 +0000 |
commit | 4e2f8bcf6f6bf6809c320aa2bec93261feefd9dd (patch) | |
tree | db761f0ce2c17806c4d485b126fb9a70e20193c4 | |
parent | df61a3d22ab54f9115638e8f5b761fffbf1a4dbe (diff) | |
download | gcc-4e2f8bcf6f6bf6809c320aa2bec93261feefd9dd.zip gcc-4e2f8bcf6f6bf6809c320aa2bec93261feefd9dd.tar.gz gcc-4e2f8bcf6f6bf6809c320aa2bec93261feefd9dd.tar.bz2 |
locale_facets.tcc (collate::do_hash): Fix.
2002-02-11 Aaron W LaFramboise <AWLaFramboise@aol.com>
* include/bits/locale_facets.tcc (collate::do_hash): Fix.
* testsuite/22_locale/collate_members_char.cc (test03): New test.
* testsuite/22_locale/collate_members_wchar_t.cc (test03): Same.
From-SVN: r49682
-rw-r--r-- | libstdc++-v3/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/locale_facets.tcc | 2 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/22_locale/collate_members_char.cc | 18 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/22_locale/collate_members_wchar_t.cc | 19 |
4 files changed, 37 insertions, 8 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 8789b9f5..68a5a97 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2002-02-11 Aaron W LaFramboise <AWLaFramboise@aol.com> + + * include/bits/locale_facets.tcc (collate::do_hash): Fix. + * testsuite/22_locale/collate_members_char.cc (test03): New test. + * testsuite/22_locale/collate_members_wchar_t.cc (test03): Same. + 2002-02-10 Phil Edwards <pme@gcc.gnu.org> * include/bits/stl_algo.h (transform (both signatures), generate_n): diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc index c27b1ee..38ee925 100644 --- a/libstdc++-v3/include/bits/locale_facets.tcc +++ b/libstdc++-v3/include/bits/locale_facets.tcc @@ -1855,7 +1855,7 @@ namespace std unsigned long __val = 0; for (; __lo < __hi; ++__lo) __val = *__lo + ((__val << 7) | - (__val >> (numeric_limits<unsigned long>::digits - 1))); + (__val >> (numeric_limits<unsigned long>::digits - 7))); return static_cast<long>(__val); } diff --git a/libstdc++-v3/testsuite/22_locale/collate_members_char.cc b/libstdc++-v3/testsuite/22_locale/collate_members_char.cc index ab5fe19..9e49cbc 100644 --- a/libstdc++-v3/testsuite/22_locale/collate_members_char.cc +++ b/libstdc++-v3/testsuite/22_locale/collate_members_char.cc @@ -147,12 +147,24 @@ void test02() #endif } +void test03() +{ + bool test = true; + std::string str1("fffff"); + std::string str2("ffffffffffff"); + + const std::locale cloc = std::locale::classic(); + const std::collate<char> &col = std::use_facet<std::collate<char> >(cloc); + + long l1 = col.hash(str1.c_str(), str1.c_str() + str1.size()); + long l2 = col.hash(str2.c_str(), str2.c_str() + str2.size()); + VERIFY( l1 != l2 ); +} + int main() { test01(); test02(); + test03(); return 0; } - - - diff --git a/libstdc++-v3/testsuite/22_locale/collate_members_wchar_t.cc b/libstdc++-v3/testsuite/22_locale/collate_members_wchar_t.cc index 3eba87a..88e72e0 100644 --- a/libstdc++-v3/testsuite/22_locale/collate_members_wchar_t.cc +++ b/libstdc++-v3/testsuite/22_locale/collate_members_wchar_t.cc @@ -146,6 +146,20 @@ void test02() } #endif } + +void test03() +{ + bool test = true; + std::wstring str1(L"fffff"); + std::wstring str2(L"ffffffffffff"); + + const std::locale cloc = std::locale::classic(); + const std::collate<wchar_t> &col = std::use_facet<std::collate<wchar_t> >(cloc); + + long l1 = col.hash(str1.c_str(), str1.c_str() + str1.size()); + long l2 = col.hash(str2.c_str(), str2.c_str() + str2.size()); + VERIFY( l1 != l2 ); +} #endif int main() @@ -153,10 +167,7 @@ int main() #if _GLIBCPP_USE_WCHAR_T test01(); test02(); + test03(); #endif return 0; } - - - - |