Thread overview
[Issue 2078] New: Bizzarre array index out of bounds error with union
May 08, 2008
d-bugmail
May 08, 2008
d-bugmail
May 09, 2008
d-bugmail
May 09, 2008
d-bugmail
May 08, 2008
http://d.puremagic.com/issues/show_bug.cgi?id=2078

           Summary: Bizzarre array index out of bounds error with union
           Product: DGCC aka GDC
           Version: unspecified
          Platform: Macintosh
        OS/Version: Mac OS X
            Status: NEW
          Severity: normal
          Priority: P2
         Component: glue layer
        AssignedTo: dvdfrdmn@users.sf.net
        ReportedBy: aronnax@umd.edu


I am writing a generic vector geometry package that looks like this:

union vector(T, int N)
{
// ...
// A whole bunch of overloaded operators
// ...

T[N] data;
static if (N == 2)
{
struct { T x, y; };
}
else static if (N == 3)
{
struct { T x, y, z; };
}
else static if (N == 4)
{
struct { T w, x, y, z; };
}

string toString()
{
string s;
for (int i = 0 ; i < N - 1 ; i ++)
s += format("%.23f, ", data[i]);
s += format("%.23f", data[N]); // Line 73
return s;
}
}

typedef vector!(float, 3) vector3f;
typedef vector!(float, 4) vector4f;
typedef vector!(double, 3) vector3d;
typedef vector!(double, 4) vector4d;

And I am getting the following compile error:
vector.d:73: Error: array index 3 is out of bounds this.data[0 .. 3]
vector.d:73: Error: array index 4 is out of bounds this.data[0 .. 4]
vector.d:73: Error: array index 3 is out of bounds this.data[0 .. 3]
vector.d:73: Error: array index 4 is out of bounds this.data[0 .. 4]

See the attached source file.
Compiler is dgcc(subversion)+gcc-4.1.2 on Mac OS X 10.5.2.


-- 

May 08, 2008
http://d.puremagic.com/issues/show_bug.cgi?id=2078





------- Comment #1 from aronnax@umd.edu  2008-05-07 22:33 -------
Created an attachment (id=254)
 --> (http://d.puremagic.com/issues/attachment.cgi?id=254&action=view)
Source listing


-- 

May 09, 2008
http://d.puremagic.com/issues/show_bug.cgi?id=2078


fawzi@gmx.ch changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |INVALID




------- Comment #2 from fawzi@gmx.ch  2008-05-09 07:34 -------
repeat with me:

"D (like C) array indexing is zero based:
int [N] a has N elements from 0 to N-1 (not from 1 to N)"

;)

Fawzi


-- 

May 09, 2008
http://d.puremagic.com/issues/show_bug.cgi?id=2078





------- Comment #3 from aronnax@umd.edu  2008-05-09 11:40 -------
Whoops!  I don't know what I was thinking.


--