summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2002-02-11 18:56:24 +0000
committerbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2002-02-11 18:56:24 +0000
commita568d8db2eb6fe34d8f4749b6aa9bc9c175e00dd (patch)
treedb761f0ce2c17806c4d485b126fb9a70e20193c4
parent6bb77977fc5d8a828b2657ea215fa78b8ee12079 (diff)
downloadppe42-gcc-a568d8db2eb6fe34d8f4749b6aa9bc9c175e00dd.tar.gz
ppe42-gcc-a568d8db2eb6fe34d8f4749b6aa9bc9c175e00dd.zip
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@49682 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--libstdc++-v3/ChangeLog6
-rw-r--r--libstdc++-v3/include/bits/locale_facets.tcc2
-rw-r--r--libstdc++-v3/testsuite/22_locale/collate_members_char.cc18
-rw-r--r--libstdc++-v3/testsuite/22_locale/collate_members_wchar_t.cc19
4 files changed, 37 insertions, 8 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 8789b9f5f50..68a5a97a04e 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 c27b1eec383..38ee9251dc4 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 ab5fe197dd0..9e49cbc2f54 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 3eba87af31c..88e72e07100 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;
}
-
-
-
-
OpenPOWER on IntegriCloud