From 98794627a195668de5950bd23cd58c8b409da8ce Mon Sep 17 00:00:00 2001 From: Ronald Garcia Date: Tue, 7 Feb 2006 00:28:09 +0000 Subject: [PATCH] Switched to boost/assert.hpp and BOOST_ASSERT. Added range checking for operator[]. [SVN r32683] --- include/boost/multi_array/base.hpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/include/boost/multi_array/base.hpp b/include/boost/multi_array/base.hpp index b84958d..3f14339 100644 --- a/include/boost/multi_array/base.hpp +++ b/include/boost/multi_array/base.hpp @@ -32,7 +32,7 @@ #include "boost/iterator/reverse_iterator.hpp" #include "boost/static_assert.hpp" #include "boost/type.hpp" -#include +#include "boost/assert.hpp" #include #include @@ -129,11 +129,13 @@ protected: Reference access(boost::type,index idx,TPtr base, const size_type* extents, const index* strides, - const index* index_base) const { + const index* index_bases) const { + BOOST_ASSERT(idx - index_bases[0] >= 0); + BOOST_ASSERT(idx - index_bases[0] < extents[0]); // return a sub_array proxy object TPtr newbase = base + idx * strides[0]; - return Reference(newbase,extents+1,strides+1,index_base+1); + return Reference(newbase,extents+1,strides+1,index_bases+1); } @@ -165,9 +167,13 @@ protected: // used by array operator[] and iterators to get reference types. template Reference access(boost::type,index idx,TPtr base, - const size_type*, + const size_type* extents, const index* strides, - const index*) const { + const index* index_bases) const { + // in case BOOST_ASSERT is disabled, index_bases and extents are unused, + // which may cause a warning. + BOOST_ASSERT(idx - index_bases[0] >= 0); + BOOST_ASSERT(idx - index_bases[0] < extents[0]); return *(base + idx * strides[0]); } @@ -433,7 +439,7 @@ protected: ++dim; } } - assert (dim == NDims); + BOOST_ASSERT(dim == NDims); return ArrayRef(base+offset,