std_bitset.h (bitset::test): Fix __pos >= _Nb comparison; all positions must be ...
authorBrendan Kehoe <brendan@zen.org>
Mon, 4 Jun 2001 17:42:22 +0000 (13:42 -0400)
committerPhil Edwards <pme@gcc.gnu.org>
Mon, 4 Jun 2001 17:42:22 +0000 (17:42 +0000)
2001-06-04  Brendan Kehoe  <brendan@zen.org>
            Phil Edwards  <pme@sources.redhat.com>

* include/bits/std_bitset.h (bitset::test):  Fix __pos >= _Nb
comparison; all positions must be < _Nb.
* testsuite/23_containers/bitset_members.cc:  New file.

Co-Authored-By: Phil Edwards <pme@gcc.gnu.org>
From-SVN: r42859

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/std_bitset.h
libstdc++-v3/testsuite/23_containers/bitset_members.cc [new file with mode: 0644]

index 14ec36e481b296736aa2a729aa3ef5e5a0d0a920..361884c56ebd9b3b95716d85865d08c4ef760e7c 100644 (file)
@@ -1,3 +1,10 @@
+2001-06-04  Brendan Kehoe  <brendan@zen.org>
+            Phil Edwards  <pme@sources.redhat.com>
+
+       * include/bits/std_bitset.h (bitset::test):  Fix __pos >= _Nb
+       comparison; all positions must be < _Nb.
+       * testsuite/23_containers/bitset_members.cc:  New file.
+
 2001-06-04  Brendan Kehoe  <brendan@zen.org>
 
        PR libstdc++/3016
index 4b442724a6fa562ba9bff2fb27f21e664dd29d11..1c868bccae9809305c4506b6c5cc2954e6fb2ae7 100644 (file)
@@ -629,7 +629,7 @@ public:
   }
 
   bool test(size_t __pos) const {
-    if (__pos > _Nb)
+    if (__pos >= _Nb)
       __STL_THROW(out_of_range("bitset"));
 
     return _Unchecked_test(__pos);
diff --git a/libstdc++-v3/testsuite/23_containers/bitset_members.cc b/libstdc++-v3/testsuite/23_containers/bitset_members.cc
new file mode 100644 (file)
index 0000000..d8de071
--- /dev/null
@@ -0,0 +1,59 @@
+// 2001-06-03 pme
+
+// Copyright (C) 2001 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 23.3.5.2 bitset members
+
+#include <bitset>
+#include <debug_assert.h>
+
+bool test01(void)
+{
+  bool test = true;
+  const size_t n1 = 5;
+
+// the other 22 member functions should be in here too...
+
+
+  // test()
+  try {
+    std::bitset<n1> five_bits;
+    bool unused = five_bits.test(n1);   // should throw
+    VERIFY( false );
+  }
+  catch(std::out_of_range& fail) {
+    VERIFY( true );
+  }
+  catch(...) {
+    VERIFY( false );
+  }
+  
+
+#ifdef DEBUG_ASSERT
+  assert(test);
+#endif
+  return test;
+}
+
+int main()
+{
+  test01();
+
+  return 0;
+}