Re: [CINT] Re: [ROOT] array boundary checking

From: Masaharu Goto (MXJ02154@nifty.ne.jp)
Date: Mon Sep 16 2002 - 23:58:39 MEST


Hello Dariusz,

Thank you for your comment.  This is one of frequently asked
questions.  I do not like this array boundary check either, but it
comes from ANSI C standard.  It says  C language processor must
allow access to an array element one beyond the boundary. In your
example, ar[20] must be allowed.  There are existing C/C++ code
depending on this behavior.  For example, STL interator relies on
it, somehow.  If  vector<T>::iterator  is  T*, then
         vector<T> a(20);  // vector of size 20
         vector<T>::iterator first = a.begin();  //  &a[0]
         vector<T>::iterator last  = a.end();    //  &a[20] one beyond
boundary

Masaharu Goto


----- Original Message -----
From: "Rene Brun" <Rene.Brun@cern.ch>
To: "Dariusz Miskowiec" <D.Miskowiec@gsi.de>
Cc: <cint@pcroot.cern.ch>
Sent: Monday, September 16, 2002 10:44 PM
Subject: [CINT] Re: [ROOT] array boundary checking


> Hi Dariusz,
>
> I forward your mail to Masa and CINT newsgroup
>
> Rene Brun
>
> On Mon, 16 Sep 2002, Dariusz Miskowiec wrote:
>
> > Hello ROOT team
> >
> > I have the impression that ROOT (3.03/08 on linux) is too
> > tolerant:
> >
> > root [0] int ar[20]
> > root [1] ar[0]
> > (int)0
> > root [2] ar[19]
> > (int)0
> > root [3] ar[20]
> > (int)0
> > root [4] ar[21]
> > Error: Array index out of range ar[21] -> [21]  valid upto ar[19]
FILE:/tmp/filelcNbJE_cint LINE:1
> > *** Interpreter error recovered ***
> >
> > Best regards
> > Dariusz Miskowiec
> >
> > --
> > +-----------------------------------------------------------------+
> > +  Dariusz Miskowiec                  E-mail: D.Miskowiec@gsi.de  +
> > +  GSI, Planckstr. 1                  Phone:  0049-6159-712-133   +
> > +  D-64291 Darmstadt                  Fax:    0049-6159-712-989   +
> > +-----------------------------------------------------------------+
> >
>



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:10 MET