Author: faridz
Date: Sun Feb 19 21:14:00 2012
New Revision: 1291062

URL: http://svn.apache.org/viewvc?rev=1291062&view=rev
Log:
2012-02-19 Farid Zaripov <far...@apache.com>

        STDCXX-1062
        * include/vector (operator[], at): Throw std::out_of_range instead of 
std::length_error.
        * tests/regress/23.vector.bool.stdcxx-1062.cpp: New regression test is 
added.

Added:
    stdcxx/branches/4.2.x/tests/regress/23.vector.bool.stdcxx-1062.cpp   (with 
props)
Modified:
    stdcxx/branches/4.2.x/include/vector

Modified: stdcxx/branches/4.2.x/include/vector
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/vector?rev=1291062&r1=1291061&r2=1291062&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/vector (original)
+++ stdcxx/branches/4.2.x/include/vector Sun Feb 19 21:14:00 2012
@@ -1237,7 +1237,7 @@ public:
 #ifdef _RWSTD_BOUNDS_CHECKING
 
         _RWSTD_REQUIRES (__n < size (),
-                         (_RWSTD_ERROR_LENGTH_ERROR,
+                         (_RWSTD_ERROR_OUT_OF_RANGE,
                           _RWSTD_FUNC ("vector<bool>::[](size_type)"),
                           __n, size ()));
 
@@ -1250,7 +1250,7 @@ public:
 #ifdef _RWSTD_BOUNDS_CHECKING
 
         _RWSTD_REQUIRES (__n < size (),
-                         (_RWSTD_ERROR_LENGTH_ERROR,
+                         (_RWSTD_ERROR_OUT_OF_RANGE,
                           _RWSTD_FUNC ("vector<bool>::[](size_type)"),
                           __n, size ()));
 
@@ -1261,7 +1261,7 @@ public:
     reference       at (size_type __n)               
     { 
         _RWSTD_REQUIRES (__n < size (),
-                         (_RWSTD_ERROR_LENGTH_ERROR,
+                         (_RWSTD_ERROR_OUT_OF_RANGE,
                           _RWSTD_FUNC ("vector<bool>::at(size_type)"),
                           __n, size ()));
       return *(begin() + __n); 
@@ -1269,7 +1269,7 @@ public:
     const_reference at (size_type __n)   const 
     {
         _RWSTD_REQUIRES (__n < size (),
-                         (_RWSTD_ERROR_LENGTH_ERROR,
+                         (_RWSTD_ERROR_OUT_OF_RANGE,
                           _RWSTD_FUNC ("vector<bool>::at(size_type) const"),
                           __n, size ()));
 

Added: stdcxx/branches/4.2.x/tests/regress/23.vector.bool.stdcxx-1062.cpp
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/tests/regress/23.vector.bool.stdcxx-1062.cpp?rev=1291062&view=auto
==============================================================================
--- stdcxx/branches/4.2.x/tests/regress/23.vector.bool.stdcxx-1062.cpp (added)
+++ stdcxx/branches/4.2.x/tests/regress/23.vector.bool.stdcxx-1062.cpp Sun Feb 
19 21:14:00 2012
@@ -0,0 +1,60 @@
+/************************************************************************
+*
+* 23.vector.bool.stdcxx-1062.cpp - regression test for STDCXX-1062
+*
+* https://issues.apache.org/jira/browse/STDCXX-1062
+*
+* $Id$
+*
+***************************************************************************
+*
+* Licensed to the Apache Software  Foundation (ASF) under one or more
+* contributor  license agreements.  See  the NOTICE  file distributed
+* with  this  work  for  additional information  regarding  copyright
+* ownership.   The ASF  licenses this  file to  you under  the Apache
+* License, Version  2.0 (the  "License"); you may  not use  this file
+* except in  compliance with the License.   You may obtain  a copy of
+* the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the  License is distributed on an  "AS IS" BASIS,
+* WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
+* implied.   See  the License  for  the  specific language  governing
+* permissions and limitations under the License.
+*
+**************************************************************************/
+
+#define _RWSTD_BOUNDS_CHECKING
+
+#include <cassert>
+#include <vector>
+#include <stdexcept>
+
+int main()
+{
+    std::vector<bool> v(1);
+
+    try {
+        v.at (v.size());
+        assert (!"Expect std::out_of_range, got nothing");
+    }
+    catch (const std::out_of_range&) {
+    }
+    catch ( ... ) {
+        assert (!"Expect out_of_range, got other exception");
+    }
+
+    try {
+        v [v.size()];
+        assert (!"Expect std::out_of_range, got nothing");
+    }
+    catch (const std::out_of_range&) {
+    }
+    catch ( ... ) {
+        assert (!"Expect out_of_range, got other exception");
+    }
+
+    return 0;
+}

Propchange: stdcxx/branches/4.2.x/tests/regress/23.vector.bool.stdcxx-1062.cpp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: stdcxx/branches/4.2.x/tests/regress/23.vector.bool.stdcxx-1062.cpp
------------------------------------------------------------------------------
    svn:keywords = Id


Reply via email to