|
Archives
D Programming
DD.gnu digitalmars.D digitalmars.D.bugs digitalmars.D.dtl digitalmars.D.ide digitalmars.D.dwt digitalmars.D.announce digitalmars.D.learn digitalmars.D.debugger C/C++ Programming
c++c++.announce c++.atl c++.beta c++.chat c++.command-line c++.dos c++.dos.16-bits c++.dos.32-bits c++.idde c++.mfc c++.rtl c++.stl c++.stl.hp c++.stl.port c++.stl.sgi c++.stlsoft c++.windows c++.windows.16-bits c++.windows.32-bits c++.wxwindows digitalmars.empire digitalmars.DMDScript electronics |
D.gnu - [Issue 2078] New: Bizzarre array index out of bounds error with union
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 07 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 07 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. -- May 09 2008
|