OSDN Git Service

2002-05-31 Marcus Meissner <meissner@suse.de>
authorpme <pme@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 1 Jun 2002 00:48:21 +0000 (00:48 +0000)
committerpme <pme@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 1 Jun 2002 00:48:21 +0000 (00:48 +0000)
* include/bits/stl_bvector.h:  Use UL suffix for unsigned longs.
* testsuite/23_containers/vector_bool.cc (test02):  New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@54128 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/stl_bvector.h
libstdc++-v3/testsuite/23_containers/vector_bool.cc

index c7d7b8a..6d097ff 100644 (file)
@@ -1,3 +1,8 @@
+2002-05-31  Marcus Meissner  <meissner@suse.de>
+
+       * include/bits/stl_bvector.h:  Use UL suffix for unsigned longs.
+       * testsuite/23_containers/vector_bool.cc (test02):  New test.
+
 2002-05-30     Marc Espie <espie@openbsd.org>
        * configure.in:  Always check for sys/types.h
        * configure:  Regenerate.
index 6cb6d9c..e48ad7d 100644 (file)
@@ -166,7 +166,7 @@ struct _Bit_iterator : public _Bit_iterator_base
   _Bit_iterator(_Bit_type * __x, unsigned int __y) 
     : _Bit_iterator_base(__x, __y) {}
 
-  reference operator*() const { return reference(_M_p, 1U << _M_offset); }
+  reference operator*() const { return reference(_M_p, 1UL << _M_offset); }
   iterator& operator++() {
     _M_bump_up();
     return *this;
@@ -223,7 +223,7 @@ struct _Bit_const_iterator : public _Bit_iterator_base
     : _Bit_iterator_base(__x._M_p, __x._M_offset) {}
 
   const_reference operator*() const {
-    return _Bit_reference(_M_p, 1U << _M_offset);
+    return _Bit_reference(_M_p, 1UL << _M_offset);
   }
   const_iterator& operator++() {
     _M_bump_up();
index 820bbac..17d63d1 100644 (file)
@@ -29,8 +29,32 @@ void test01()
   ++i;
 }
 
+// libstdc++/6886
+void test02()
+{
+  typedef std::vector<bool>  bvec;
+  int  i, num = 0;
+  bvec v;
+
+  v.resize(66);
+
+  for (i = 0 ; i < 66 ; ++i)
+    v[i] = 0;
+
+  v[1]    = 1;
+  v[33]   = 1;
+  v[49]   = 1;
+  v[65]   = 1;
+
+  for (bvec::iterator j = v.begin() ; j != v.end() ; j++)
+    if (bool(*j)) ++num;
+
+  VERIFY( num == 4 );
+}
+
 int main()
 {
   test01();
+  test02();
   return 0;
 }